我看到我们可以设置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驱动程序如何知道标准二进制路径的位置。
答案 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);
}
在第二个解决方案中,我认为你的机器上有不同的操作系统。这是我使用的解决方案。然而,它更具体到我的问题。