You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Selenium ChromeDriver TypeError错误求助:请帮忙分析代码报错原因

解决Selenium中的TypeError问题

我来帮你分析这个错误的原因,以及对应的解决办法:

错误原因

你遇到的TypeError是因为Selenium 4.x版本改变了webdriver.Chrome()的参数传递方式。在Selenium 3中,你可以直接把驱动路径作为第一个位置参数传入,但在Selenium 4里,这个构造函数的第一个参数变成了options,而驱动路径需要通过service参数来指定,直接传路径就会导致参数类型不匹配,触发TypeError。

解决方案

这里有两种可行的解决方式,推荐第一种符合新版本规范的写法:

方式1:使用ChromeService指定驱动路径(Selenium 4+ 推荐)

修改代码,通过ChromeService来传递chromedriver的路径,示例代码如下:

from selenium import webdriver
from selenium.webdriver.chrome.service import Service

headlessoptions = webdriver.ChromeOptions()
headlessoptions.add_argument('headless')
chromedriver = 'C:/dev_python/Webdriver/chromedriver.exe'
# 用Service包装驱动路径
service = Service(chromedriver)
driver = webdriver.Chrome(service=service, options=headlessoptions)

driver.get('https://davelee-fun.github.io/')
elem = driver.find_element(by="tag name", value="h1")  # Selenium 4推荐的统一元素定位写法
print(elem.text)
driver.quit()

额外提醒:Selenium 4已经废弃了find_element_by_tag_name这类旧的元素定位方法,推荐使用find_element(by=..., value=...)的统一写法,避免后续版本的兼容问题。

方式2:降级到Selenium 3.x版本

如果你暂时不想修改代码结构,可以通过pip降级Selenium版本:

pip uninstall selenium
pip install selenium==3.141.0

这种方式能让你原来的代码正常运行,但不推荐长期使用,毕竟新版本会修复更多bug并提供新特性。

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

火山引擎 最新活动