Где найти константы ChromeDriver для настроек браузера в Java?

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

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
0
527
3

Ответы 3

В 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(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/…
Alpha 31.05.2018 08:27

Вы можете изменить его из кода:

System.setProperty(ChromeDriverService.CHROME_DRIVER_EXE_PROPERTY, chromeDriverLocation);

или параметр командной строки

java -Dwebdriver.chrome.driver=chromeDriverLocation testClass

Другие вопросы по теме