Selenium开发Xbox自动登录脚本遇WebDriver无find属性报错
问题根因
报错由拼写错误导致:代码中driver.find.element_by_name("passwd")的属性调用写错了,WebDriver对象下不存在find属性,你是把find_element误拆成了find.element。
修正方案
1. 基础修正(直接改拼写)
把报错行改为以下内容即可解决当前报错:
pass_box = driver.find_element_by_name("passwd")
2. 标准规范写法(适配Selenium 4.x+ 推荐使用)
Selenium 4.0及以上版本已经废弃了find_element_by_xxx系列的旧API,统一使用find_element(By.定位类型, 定位值)的写法,和你之前定位「下一步」按钮的逻辑保持一致,修改为:
pass_box = driver.find_element(By.NAME, "passwd")
3. 额外优化:补充元素等待避免后续报错
点击「下一步」按钮后页面需要加载密码输入模块,若直接定位很容易出现元素未加载完成的报错,建议增加显式等待逻辑:
首先导入依赖包:
from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC
再把定位密码框的代码替换为等待逻辑:
# 最长等待10秒,直到密码输入框加载完成 pass_box = WebDriverWait(driver, 10).until( EC.presence_of_element_located((By.NAME, "passwd")) )
内容的提问来源于stack exchange,提问作者Baqer Farhan
相关产品推荐
相关产品推荐

