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

使用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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 22:39:25