使用Selenium WebDriver,如果我想启动Chrome浏览器,那么首先需要设置系统属性,例如 -
System.setProperty("webdriver.chrome.driver", chromeDriverLocation);
在这里,我们提到了wedriver.chrome.driver
但它已经在"ChromeDriverService"中定义,因此可以直接使用该常量,例如(参考文档( -
System.setProperty(ChromeDriverService.CHROME_DRIVER_EXE_PROPERTY, chromeDriverLocation);
但是,如果我想在特定位置下载文件,我会在Firefox配置文件中提供详细信息,例如-
FirefoxProfile profile = new FirefoxProfile();
profile.setPreference("browser.download.dir", folder.getAbsolutePath());
profile.setPreference("browser.download.folderList", 2);
profile.setPreference("browser.helperApps.neverAsk.saveToDisk",
"image/jpeg, application/pdf, application/octet-stream");
profile.setPreference("pdfjs.disabled", true);
driver = new FirefoxDriver(profile);
}
在这里我们可以看到常量值,如browser.download.dir
、browser.helperApps.neverAsk.saveToDisk
等。
这些是否在我们ChromeDriverService.CHROME_DRIVER_EXE_PROPERTY
的任何地方定义为常量?所以我们可以直接在代码中使用它们。
ChromeDriverService 类支持以下字段:
- CHROME_DRIVER_EXE_PROPERTY
- CHROME_DRIVER_LOG_PROPERTY
- CHROME_DRIVER_SILENT_OUTPUT_PROPERTY
- CHROME_DRIVER_VERBOSE_LOG_PROPERTY
- CHROME_DRIVER_WHITELISTED_IPS_PROPERTY
因此,您可以使用:
System.setProperty(ChromeDriverService.CHROME_DRIVER_EXE_PROPERTY, chromeDriverLocation);
但 FirefoxProfile 支持三种重载setPreference()
方法,如下所示:
setPreference(java.lang.String key, boolean value)
setPreference(java.lang.String key, int value)
setPreference(java.lang.String key, java.lang.String value)
所有这三种方法都接受键(字符串(和值(布尔/整数/字符串(对,并设置此特定配置文件的首选项。Firefox 浏览器在启动时配置了这些值。
结论
因此,所需的偏好例如browser.download.dir
、browser.download.folderList
、browser.helperApps.neverAsk.saveToDisk
、pdfjs.disabled
等不是常量,而是键(字符串(值(布尔/整数/字符串(对,不能在代码中被视为常量。
在 Firefox 中,您可以在地址栏中键入about:config
以查看所有首选项名称及其当前值。
对于 Chrome,您可以在地址栏中键入chrome://flags
以查看所有当前设置及其值。
点击这里了解更多详情
你可以从代码中更改它:
System.setProperty(ChromeDriverService.CHROME_DRIVER_EXE_PROPERTY, chromeDriverLocation);
或命令行参数
java -Dwebdriver.chrome.driver=chromeDriverLocation testClass