解决Selenium调用ChromeDriver未找到或版本不匹配问题
本文详解Selenium自动化测试中ChromeDriver找不到的常见原因及解决方案。重点介绍如何根据浏览器版本下载匹配的驱动,通过配置系统环境变量或直接在代码中指定executable_path路径来解决报错。针对即使配置环境变量仍报“cannot find Chrome binary”的情况,提供了具体的代码级路径指定方法,确保自动化脚本稳定运行。
ChromeDriver与Selenium通信原理
ChromeDriver是Google为Web开发者提供的自动化测试接口,它充当Selenium 2与Chrome浏览器之间的通信桥梁。Selenium通过一套名为JsonWireProtocol的协议(详见https://github.com/SeleniumHQ/selenium/wiki/JsonWireProtocol)与ChromeDriver交互,其本质是对该底层协议的封装,并对外提供WebDriver上层调用类库。
接下来介绍如何解决在使用Selenium自动控制浏览器时遇到的ChromeDriver找不到的问题,具体操作步骤如下。
在近期学习爬虫技术时,我使用Selenium模块调用ChromeDriver来自动控制Chrome浏览器,期间遇到了一些障碍,在此进行总结分享。
ChromeDriver下载与环境变量配置
首先,下载ChromeDriver时必须确保其版本与本地安装的Chrome浏览器版本严格对应。下载地址为:http://npm.taobao.org/mirrors/chromedriver/。

将下载好的ChromeDriver文件保存至Chrome浏览器的安装目录下。

随后,将ChromeDriver的所在路径添加到系统环境变量的Path中。通常情况下,完成此配置后调用ChromeDriver即可正常使用。
from selenium import webdriver
browser = webdriver.Chrome()
browser.get('http://www.baidu.com/')
或者,
from selenium import webdriver
options = webdriver.ChromeOptions()
#options.add_argument('user-agent="Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.110 Safari/537.36"')
driver = webdriver.Chrome(chrome_options=options)
driver.get('https://www.baidu.com/')
代码级路径指定解决方案
然而,部分电脑即便配置了环境变量仍无法正常使用。参考其他博主的建议,有人尝试将ChromeDriver放置在Python安装目录及当前工作目录下,但结果依然无效,并抛出报错:WebDriverException: Message: unknown error: cannot find Chrome binary。此时,只能采用在代码中直接设置路径的方法进行调用,具体代码如下:
from selenium import webdriver
browser = webdriver.Chrome('你的Chromedriver路径')
browser.get('http://www.baidu.com/')
或者,
from selenium import webdriver
options = webdriver.ChromeOptions()
#options.binary_location = r'你的Chrome安装路径'
#options.add_argument('user-agent="Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.110 Safari/537.36"')
driver = webdriver.Chrome(chrome_options=options,executable_path=r'你的Chromedriver路径')
driver.get('https://www.baidu.com/')

总结
以上介绍了解决Selenium自动控制浏览器时找不到ChromeDriver问题的方法,希望对你有帮助,感谢支持本站!
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













