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

Google chrome 仅当二进制文件不在标准位置时,Selenium才设置chrome二进制文件,google-chrome,selenium,Google Chrome,Selenium,看这里 我发现,如果chrome二进制文件位于非标准位置,我们可以将其设置为: ChromeOptions options = new ChromeOptions(); options.setBinary("/path/to/other/chrome/binary"); 我有一种情况,一台机器在标准位置有二进制文件,而另一台机器没有有没有办法检查chrome二进制文件是否在标准位置?这样,我只会在不在标准位置时设置二进制文件 我当前的解决方法是使用异常: try { ChromeOpt

看这里

我发现,如果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驱动程序如何知道标准二进制路径在哪里。

第一个解决方案:如果有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”)
来区分它们。如果没有,您可以在此页面上找到其他属性: 并使用此代码:

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

在第二种解决方案中,我假设您的机器上有不同的操作系统。这就是我使用的解决方案。但是,这更具体地针对我的问题。

在我的情况下,他们都有相同的操作系统。我想知道当我们不指定二进制文件时,chrome驱动程序如何知道默认的二进制文件路径在哪里。在指定二进制路径之前,也许我可以使用相同的方法确定默认路径中是否存在二进制。您是否尝试在您的计算机上搜索Chrome二进制文件,并将其放置在标准位置?