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




