#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
творит для вас волшебство:
- Он проверяет версию браузера, установленного на вашем компьютере (например
Chrome, Firefox
). - Он соответствует версии драйвера (например
chromedriver
,geckodriver
). Если неизвестно, он использует последнюю версию драйвера. - Он загружает драйвер, если его нет на
WebDriverManager
cache (~/.cache/selenium by default).
- Он экспортирует необходимые переменные среды 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();