如何为 Selenium 自动安装正确版本的 chromedriver Java
How to autoinstall the right version of chromedriver for Selenium Java
我正在尝试使用 Selenium 为特定的 WebApp 构建一个网络爬虫。因为我并不总是想更新我的 Java 程序,所以我需要找到一个解决方案,在我启动程序时,我可以在其中自动安装最新版本的 chromedriver。
我只能找到 python.
的解决方案
WebDriverManager is a library which allows to automate the management
of the drivers (e.g. chromedriver, geckodriver, etc.) required by
Selenium WebDriver.
如果你使用Selenium WebDriver
,你可能知道要使用一些浏览器,例如Chrome
、Firefox
、Edge
、Opera
、PhantomJS
,或者Internet Explorer
,首先你需要下载所谓的驱动程序,即一个binary file which allows WebDriver to handle these browsers
。在Java中,这个驱动的路径应该设置为JVM properties
,如下:
System.setProperty("webdriver.chrome.driver", "/path/to/chromedriver");
这很烦人,因为它迫使您 link 直接将此驱动程序添加到您的源代码中。此外,您必须手动检查何时发布新版本的驱动程序。 WebDriverManager
来救援,以自动方式为您执行这项工作。 WebDriverManager
可以以不同的方式使用:
WebDriverManager 作为 Java 依赖项
要在 Maven 项目的测试中使用 WebDriverManager
,您需要在 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).
上不存在驱动程序,它会下载驱动程序
- 它导出
Selenium
所需的正确的 WebDriver Java 环境变量(在 CLI 中或作为服务器使用 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();
我正在尝试使用 Selenium 为特定的 WebApp 构建一个网络爬虫。因为我并不总是想更新我的 Java 程序,所以我需要找到一个解决方案,在我启动程序时,我可以在其中自动安装最新版本的 chromedriver。 我只能找到 python.
的解决方案WebDriverManager is a library which allows to automate the management of the drivers (e.g. chromedriver, geckodriver, etc.) required by Selenium WebDriver.
如果你使用Selenium WebDriver
,你可能知道要使用一些浏览器,例如Chrome
、Firefox
、Edge
、Opera
、PhantomJS
,或者Internet Explorer
,首先你需要下载所谓的驱动程序,即一个binary file which allows WebDriver to handle these browsers
。在Java中,这个驱动的路径应该设置为JVM properties
,如下:
System.setProperty("webdriver.chrome.driver", "/path/to/chromedriver");
这很烦人,因为它迫使您 link 直接将此驱动程序添加到您的源代码中。此外,您必须手动检查何时发布新版本的驱动程序。 WebDriverManager
来救援,以自动方式为您执行这项工作。 WebDriverManager
可以以不同的方式使用:
WebDriverManager 作为 Java 依赖项
要在 Maven 项目的测试中使用 WebDriverManager
,您需要在 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).
上不存在驱动程序,它会下载驱动程序
- 它导出
Selenium
所需的正确的 WebDriver Java 环境变量(在 CLI 中或作为服务器使用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();