Selenium之cannot find Chrome binary错误
一、浏览器安装默认路径
Selenium环境搭建的问题引起最多的是No browser is open,这种报错导致浏览器无法打开;问题的原因主要是2点
1.浏览器安装默认路径
2.浏览器匹配的驱动没有放在正确的环境变量目录位置(可以代码指定驱动路径)
3.浏览器版本与对应的驱动版本匹配
只要确认这2个问题,基本上可以解决No browser is open的问题;但是注意是基本上,曾几何时群里也有人遇到过上面3点都做到了,但还是有抽筋的时候,重启电脑就可以了。
二、浏览器安装非默认路径
浏览器安装时选择非默认路径,这是很多人为了不占用系统盘空间经常干的活,但是对于Selenium环境来说就有点困惑,回到Selenium的原理当运行代码,会通过ChromeDriver插件启动一个Socket服务并生成一个Sessionid打开浏览器窗口,而打开这个浏览器窗口是执行浏览器的应用程序文件(如Chrome的chrome.exe),如果浏览器安装的非默认路径,这时候Selenium找不到这个二进制的chrome.exe文件这时候抛出异常:
WebDriverException:Message:unknown error:cannot find Chrome binary
最简单的方法:卸载浏览器,重新安装到默认路径
如果就是不喜欢安装在默认路径,方法如下:
1.配置浏览器的安装目录到环境变量中(系统的环境变量有什么用就不在这里普及了)
2.Selenium提供了方法设置浏览器二进制文件的位置
(1)JAVA代码
ChromeOptions option = new ChromeOptions();
option.setBinary("E:/browser/Google/Chrome/Application/chrome.exe");
WebDriver driver = new ChromeDriver(option);
(2)Python
options = webdriver.ChromeOptions()
options.binary_location = "E:\browser\Google\Chrome\Application\chrome.exe"
browser = webdriver_type(chrome_options=options)
(3)RobotFramework
RobotFramework RIDE中使用的是Selenium2Library的库,所以需要修改源码来支持,在Python\Lib\site-packages\robotframework_selenium2library-1.8.0-py2.7.egg\Selenium2Library\keywords目录下找到_browsermanagement.py文件,打开文件后,找到_generic_make_browser方法,这个方法是初始化driver,所以在这里修改
def _generic_make_browser(self, webdriver_type , desired_cap_type, remote_url, desired_caps):
'''most of the make browser functions just call this function which creates the
appropriate web-driver'''
if not remote_url:
if webdriver_type == webdriver.Chrome:
options = webdriver.ChromeOptions()
options.binary_location = "E:\browser\Google\Chrome\Application\chrome.exe"
browser = webdriver_type(chrome_options=options)
else:
browser = webdriver_type()
else:
browser = self._create_remote_web_driver(desired_cap_type,remote_url , desired_caps)
return browser
上面红色部分是修改的,主要是针对Chrome浏览器的,webdriver_type入参的值如果是webdriver.Chrome则设置chrome.exe二进制路径,在RobotFramework使用关键字Open Browser,入参为chrome、gc、GoogleChrome则webdriver_type为webdriver.Chrome。其他浏览器需要的话再加判断条件。
更多推荐
所有评论(0)