如何为 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,你可能知道要使用一些浏览器,例如ChromeFirefoxEdgeOperaPhantomJS,或者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 就可以为您带来神奇效果:

  1. 它会检查您机器上安装的浏览器版本(例如 Chrome, Firefox).
  2. 它匹配驱动程序的版本(例如chromedrivergeckodriver)。如果未知,则使用最新版本的驱动程序。
  3. 如果 WebDriverManager cache (~/.cache/selenium by default).
  4. 上不存在驱动程序,它会下载驱动程序
  5. 它导出 Selenium 所需的正确的 WebDriver Java 环境变量(在 CLI 中或作为服务器使用 WebDriverManager 时未完成)。

WebDriverManager 解析浏览器 Chrome、Firefox、Edge、Opera、PhantomJSInternet ExplorerChromium 的驱动程序。为此,它为这些浏览器提供了多个驱动程序管理器。这些驱动程序管理器可以按如下方式使用:

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