You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python Selenium实现Twitter登录时find_element_by_xpath报语法错误如何解决

问题原因&解决方法

  1. 字符串引号冲突:你写的Xpath表达式里外层用了双引号,内层@id="layers"也用了双引号,语法错误直接导致报错,要么把内层引号改成单引号,要么外层用单引号包裹表达式。
  2. 缺少页面加载等待:Twitter登录页是动态渲染的,执行driver.get后立刻查找元素,此时目标元素还没加载完成,必然定位失败。需要添加显式等待,等目标元素可交互后再执行操作。
  3. 绝对Xpath稳定性极差:直接从开发者工具复制的绝对Xpath依赖完整的DOM层级,只要Twitter前端调整一点点元素结构就会失效,建议用基于元素特征的相对Xpath。
  4. 旧版Selenium语法失效:Selenium 4.0及以上版本已经移除了find_element_by_xpath这类方法,需要统一使用find_element(By.定位方式, 表达式)的写法,提前导入By模块。

修正后的可运行代码

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

driver = webdriver.Chrome(executable_path="C:\\Webdrivers\\chromedriver.exe")
driver.get("https://twitter.com/i/flow/login")

# 显式等待最多10秒,直到邮箱输入框可交互
email_input = WebDriverWait(driver, 10).until(
    EC.element_to_be_clickable((By.XPATH, "//input[@autocomplete='username']"))
)
email_input.send_keys("orlaharty1@gmail.com")

# 点击下一步按钮,英文界面请将文本内容替换为'Next'
next_button = WebDriverWait(driver, 10).until(
    EC.element_to_be_clickable((By.XPATH, "//span[text()='下一步']/parent::div/parent::div"))
)
next_button.click()

内容的提问来源于stack exchange,提问作者or laharty

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.23 15:18:07