使用Selenium Python向网页输入框传值失败,请求问题排查
问题分析与解决
核心问题点
- 元素定位方法过时:你使用的
find_element_by_id()是Selenium 3及更早版本的语法,Selenium 4.x已经移除了这类旧版元素定位方法,需改用基于By类的新语法。 - 路径转义错误:
C:\chromedriver.exe中的反斜杠\是Python的转义字符,会导致路径解析异常,需要特殊处理。 - 缺少元素加载等待:页面可能未完全加载就执行元素定位操作,导致找不到目标元素。
修正后的代码
from selenium import webdriver as w from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC # 用原始字符串处理路径,避免转义符解析问题 d = w.Chrome(executable_path=r"C:\chromedriver.exe") d.get("https://demoqa.com/automation-practice-form") try: # 显式等待元素加载完成,最多等待10秒 first_name_input = WebDriverWait(d, 10).until( EC.presence_of_element_located((By.ID, 'firstName')) ) first_name_input.send_keys("TEST") except Exception as e: print(f"错误详情: {str(e)}") finally: d.quit()
关键说明
- 导入
By类:通过By.ID指定定位方式,替代旧版的find_element_by_id()方法,这是Selenium 4.x的标准写法。 - 原始字符串路径:在路径字符串前加
r,让Python将其视为原始字符序列,不解析其中的转义符。 - 显式等待:使用
WebDriverWait配合预期条件,等待目标元素出现后再执行操作,比强制休眠更高效,能适配不同加载速度的页面。
内容的提问来源于stack exchange,提问作者hamdi salim
相关产品推荐
相关产品推荐

