selenium.common.exceptions.WebDriverException 报错问题解决

本文详细介绍如何在MacOS环境下,解决Selenium与ChromeDriver配合使用时遇到的找不到Chrome浏览器位置的问题。通过指定Chrome和ChromeDriver的正确路径,实现自动化测试。

我的开发环境:

操作系统Mac OS 10.12
Python3.6.5
Chrome71.0
chromedriver2.45

selenium + chromedriver 可以让代码模拟人类使用浏览器访问网站的行为,但是在初始化的时候报错是令人头疼的,比如我就遇到了这样的报错内容:

selenium.common.exceptions.WebDriverException: Message: unknown error: cannot find Chrome binary

它的意思是说,找不到我的chrome浏览器的位置,所以需要给出我chrome浏览器的路径。

现在我从头到尾初始化一遍:

>>> from selenium import webdriver  #第一步导入
>>> options = webdriver.ChromeOptions()  #调用ChromeOptions方法
>>> options.binary_location = r"/Applications/Google Chrome 2.app/Contents/MacOS/Google Chrome"  
'''
给出chrome浏览器的路径,我是Mac系统;我这里是Google Chrome 2,因为我还有一个低版本的
chrome,正常情况这里应该是Google Chrome.app
'''
>>> chrome_driver_binary = "/usr/bin/chromedriver"  #给出chromedriver的路径
>>> driver = webdriver.Chrome(chrome_driver_binary,chrome_options = options) 
#初始化,通过selenium打开chrome浏览器
>>> driver.get("http://www.baidu.com")  #打开百度

这样就可以顺利通过selenium打开chrome浏览器了。

#注意:安装selenium非常简单,只需要pip3 install selenium就可以了;

安装chromedriver需要找和自己chrome浏览器版本相对应的chromedriver版本,具体可以参考这个链接:

http://chromedriver.storage.googleapis.com/2.45/notes.txt

chromedriver下载链接:http://chromedriver.storage.googleapis.com/index.html

我的chrome版本是71.0,安装的chromedriver版本是2.45的。版本必须对应才可以。

在使用 Selenium WebDriver 时,遇到 `selenium.common.exceptions.WebDriverException: The URL '/session' did not map to a valid resource` 异常通常表示客户端尝试与 WebDriver 建立连接时,目标服务器未能识别请求的路径或未正确运行。此类问题常见于以下几种情况: - WebDriver 服务未正确启动 - 使用了不兼容或错误版本的 WebDriver 与浏览器组合 - 客户端与 WebDriver 之间的通信路径配置错误 - 浏览器驱动程序(如 ChromeDriver、GeckoDriver)监听的端口被占用或未开放 为解决问题,可以采取以下措施: 1. 确保 WebDriver 服务正常运行。例如,如果使用的是 ChromeDriver,应在命令行中单独启动它并确认其日志输出是否正常: ```bash chromedriver --port=9515 ``` 这将启动 WebDriver 并监听指定端口。 2. 检查浏览器和 WebDriver 的版本是否兼容。例如,Chrome 浏览器更新后可能需要相应更新 ChromeDriver[^1]。 3. 在代码中设置正确的 WebDriver 路径,并确保其可执行文件具有适当的权限。例如,在 Python 中可以通过如下方式指定 ChromeDriver 的路径: ```python from selenium import webdriver driver_path = "/path/to/chromedriver" driver = webdriver.Chrome(executable_path=driver_path) ``` 4. 如果通过远程 WebDriver 服务进行测试,应检查远程服务器地址和端口是否正确,并确保其支持 `/session` 资源路径。例如,使用 Selenium Grid 时,URL 应指向有效的节点或集线器端点: ```python from selenium import webdriver remote_url = "http://localhost:4444/wd/hub" driver = webdriver.Remote(command_executor=remote_url, desired_capabilities={'browserName': 'chrome'}) ``` 5. 更新 Selenium 客户端库至最新版本,以确保与当前 WebDriver 实现兼容。可以通过 pip 更新: ```bash pip install --upgrade selenium ``` 6. 如果使用 Appium 或其他第三方 WebDriver 实现,请确保其配置正确且服务已成功启动。对于 Appium,可通过以下命令启动服务: ```bash appium --address 0.0.0.0 --port 4723 ``` 此外,对于特定于 `/wd/hub/session/.../window/size` 请求的问题(如引用[1]中提到的 `driver.get_window_size()` 报错),可能是由于某些 WebDriver 实现不支持该操作或调用时机不当。在这种情况下,建议查阅相关文档以确认方法可用性,或尝试替代方案,例如通过 JavaScript 执行窗口尺寸获取操作: ```python window_size = driver.execute_script("return [window.innerWidth, window.innerHeight];") print(f"Window size: {window_size}") ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值