Используя 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? Таким образом, мы можем напрямую использовать их в коде.




В Firefox вы можете ввести about:config в адресной строке, чтобы увидеть все имя предпочтения и его текущее значение.
Для Chrome вы можете ввести chrome://flags в адресной строке, чтобы увидеть все текущие настройки и их значения.
нажмите здесь для получения более подробной информации.
Класс ChromeDriverService поддерживает следующие поля:
Следовательно, вы можете использовать:
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)Все три метода принимают пару ключ (Нить) и значение (boolean / int / String) и задают предпочтение для этого конкретного профиля. Браузер Firefox при запуске настраивается с этими значениями.
Итак, желаемые предпочтения, например. browser.download.dir, browser.download.folderList, browser.helperApps.neverAsk.saveToDisk, pdfjs.disabled и т. д. Являются парой не константы, а ключ (Нить) значение (логическое / int / String), и их нельзя рассматривать как константы в вашем коде.
Вы можете изменить его из кода:
System.setProperty(ChromeDriverService.CHROME_DRIVER_EXE_PROPERTY, chromeDriverLocation);
или параметр командной строки
java -Dwebdriver.chrome.driver=chromeDriverLocation testClass
System.setProperty(key, value)также имеет ключ, и все же они объявилиwebdriver.chrome.driverконстантой, и я не понял, почемуbrowser.download.dir,browser.download.folderList,browser.helperApps.neverAsk.saveToDisk,pdfjs.disabledне являются константами. Нет ничего плохого в том, чтобы они оставались постоянными, поскольку они никогда не изменятся - docs.oracle.com/javase/7/docs/api/java/lang/…