仅当二进制文件不在标准位置时,Selenium才设置chrome二进制文件

时间:2017-10-30 20:32:22

标签: google-chrome selenium

在这里https://sites.google.com/a/chromium.org/chromedriver/capabilities#TOC-Using-a-Chrome-executable-in-a-non-standard-location

我看到我们可以设置chrome二进制文件,如果它位于非标准位置,如下所示:

ChromeOptions options = new ChromeOptions();
options.setBinary("/path/to/other/chrome/binary");

我的情况是一台机器在标准位置有二进制文件而另一台机器没有。 有没有办法检查chrome二进制文件是否在标准位置?这样我只会设置二进制文件,如果它不在标准位置。

我目前的解决方法是使用例外:

try {
    ChromeOptions options = new ChromeOptions();
} catch (WebDriverException e) {
    ChromeOptions options = new ChromeOptions();
    options.setBinary("/path/to/other/chrome/binary");
}

但我仍然好奇 Chrome驱动程序如何知道标准二进制路径的位置。

1 个答案:

答案 0 :(得分:0)

第一个解决方案:直接签入非标准位置,是否有chrome二进制文件。您可以使用以下代码:

File binaryFile = new File("/path/to/other/chrome/binary");
    if(binaryFile.exists()){
        //binary file is not in standard location
        ChromeOptions options = new ChromeOptions();
        options.setBinary("/path/to/other/chrome/binary");
    }
    else{
        //binary file is in standard location
    }

第二个解决方案:如果两台计算机的操作系统不同,您可以使用System.getProperty("os.name")区分这两台计算机。如果他们没有,您可以在此页面上找到其他属性:https://docs.oracle.com/javase/tutorial/essential/environment/sysprop.html 并使用此代码:

if (System.getProperty("os.name").toLowerCase().equals("windows")){
    DesiredCapabilities capability = DesiredCapabilities.chrome();
    capability.setCapability("chrome.binary","/path/to/chromedriver.exe");
    driver = new ChromeDriver(capability);
}

在第二个解决方案中,我认为你的机器上有不同的操作系统。这是我使用的解决方案。然而,它更具体到我的问题。