Как автоматически установить правильную версию chromedriver для Selenium Java

#java #selenium #selenium-chromedriver

Вопрос:

Я пытаюсь создать веб-крапер для конкретного веб-приложения, используя Selenium. Поскольку я не всегда хочу обновлять свою программу Java, мне нужно найти решение, в котором я смогу автоматически установить новейшую версию chromedriver при запуске программы. Я мог найти решения только для python.

Комментарии:

1. Пожалуйста, отредактируйте вопрос, чтобы ограничить его конкретной проблемой с достаточной детализацией для определения адекватного ответа.

2. @Сообщество : Я думаю, что это хороший вопрос, так как в stackoverflow все решения относятся к python, а не к Java

Ответ №1:

WebDriverManager-это библиотека, которая позволяет автоматизировать управление драйверами (например, chromedriver, geckodriver и т. Д.), требуемыми Selenium WebDriver.

Если вы используете Selenium WebDriver , вы, вероятно, знаете, что для использования некоторых браузеров, таких как Chrome , Firefox , Edge , Opera , PhantomJS , или Internet Explorer , сначала вам нужно загрузить так называемый драйвер, т. е. a binary file which allows WebDriver to handle these browsers . В Java путь к этому драйверу должен быть задан следующим JVM properties образом:

 System.setProperty("webdriver.chrome.driver", "/path/to/chromedriver");
 

Это довольно раздражает, так как заставляет вас напрямую связывать этот драйвер с вашим исходным кодом. Кроме того, вам необходимо вручную проверить, когда будут выпущены новые версии драйверов. WebDriverManager приходит на помощь, выполняя автоматизированным способом эту работу за вас. WebDriverManager может использоваться по — разному:

WebDriverManager как зависимость от Java

Чтобы использовать WebDriverManager из тестов в проекте Maven, вам необходимо добавить следующую зависимость в свой pom.xml (Java 8 or upper required) , обычно используя область тестирования:

 <dependency>
    <groupId>io.github.bonigarcia</groupId>
    <artifactId>webdrivermanager</artifactId>
    <version>4.4.3</version>
    <scope>test</scope>
</dependency>
 

Как только мы включим эту зависимость, вы можете позволить WebDriverManager управлять драйверами за вас.

 public class ChromeTest {

    private WebDriver driver;

    @BeforeClass
    public static void setupClass() {
        WebDriverManager.chromedriver().setup();
    }

    @Before
    public void setupTest() {
        driver = new ChromeDriver();
    }

    @After
    public void teardown() {
        if (driver != null) {
            driver.quit();
        }
    }

    @Test
    public void test() {
        // Your test code here
    }

}
 

Обратите внимание, что простое добавление WebDriverManager.chromedriver().setup(); WebDriverManager творит для вас волшебство:

  1. Он проверяет версию браузера, установленного на вашем компьютере (например Chrome, Firefox ).
  2. Он соответствует версии драйвера (например chromedriver , geckodriver ). Если неизвестно, он использует последнюю версию драйвера.
  3. Он загружает драйвер, если его нет на WebDriverManager cache (~/.cache/selenium by default).
  4. Он экспортирует необходимые переменные среды Java WebDriver, требуемые Selenium (не выполняется при использовании WebDriverManager из интерфейса командной строки или в качестве сервера).

WebDriverManager разрешает драйверы для браузеров Chrome, Firefox, Edge, Opera, PhantomJS , Internet Explorer , и Chromium . Для этого он предоставляет несколько менеджеров драйверов для этих браузеров. Эти менеджеры драйверов можно использовать следующим образом:

 WebDriverManager.chromedriver().setup();
WebDriverManager.firefoxdriver().setup();
WebDriverManager.edgedriver().setup();
WebDriverManager.operadriver().setup();
WebDriverManager.phantomjs().setup();
WebDriverManager.iedriver().setup();
WebDriverManager.chromiumdriver().setup();