0%

Selenium | webdrivermanager 简化 driver 配置管理

在使用 Selenium 之前,需要确保已经有了和被测浏览器版本一致的 driver,如果没有,就要到官网下载所需的 driver。因为现代浏览器更新频繁,下载 driver 也就变得频繁。这个过程就变成了繁琐、无趣的事情。如果你以 hub-node 模式运行在很多浏览器的环境,这事儿就更让人难受了。

最近发现一个项目很好地解决了这个问题。

作用

WebDriverManager 具有以下作用:

  • 自动下载所需版本的 driver
  • 省去设置 driver 路径的环境变量,即,无需显示写出System.setProperty("webdriver.chrome.driver", "C:\\chromedriver.exe")

使用

pom.xml

Maven 项目(JDK 8+)

1
2
3
4
5
6
<dependency>
<groupId>io.github.bonigarcia</groupId>
<artifactId>webdrivermanager</artifactId>
<version>4.4.3</version>
<scope>test</scope>
</dependency>

in tests

new driver()前设置

1
2
3
WebDriverManager.chromedriver().setup();

WebDriver driver = new ChromeDriver();

其他 driver 的设置方法

1
2
3
4
5
6
7
WebDriverManager.chromedriver().setup();
WebDriverManager.firefoxdriver().setup();
WebDriverManager.edgedriver().setup();
WebDriverManager.operadriver().setup();
WebDriverManager.phantomjs().setup();
WebDriverManager.iedriver().setup();
WebDriverManager.chromiumdriver().setup();

但有时我们希望创建 driver 的过程可以适应不同的浏览器,即参数化,可以这样:

1
2
3
4
5
6
7
8
9
10
11
12
import static io.github.bonigarcia.wdm.DriverManagerType.CHROME;

import org.openqa.selenium.WebDriver;
import io.github.bonigarcia.wdm.WebDriverManager;

// ...

DriverManagerType driverType = DriverManagerType.CHROME;

WebDriverManager.getInstance(driverType).setup();
Class<?> driverTypeClass = Class.forName(driverType.browserClass());
WebDriver driver = (WebDriver) driverTypeClass.getDeclaredConstructor().newInstance();

更多功能

以上只是对我来说最有用的功能,WebDriverManager还有很多其他丰富的功能,列举几个:

  • 设置 proxy
  • 设置 agent
  • 指定浏览器和 driver 版本
  • 等等……

更多信息,请查阅官网:WebDriverManager

欢迎关注我的其它发布渠道