一、浏览器安装默认路径

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。其他浏览器需要的话再加判断条件。

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐