WebDriverManager 是一个开源Java 库,它以完全自动化的方式对Selenium WebDriver 所需的驱动程序(例如chromedriver、geckodriver、msedgedriver 等)进行管理(即下载、设置和维护)。此外,WebDriverManager 还提供其他相关功能,例如发现本地系统中安装的浏览器、构建 WebDriver 对象(例如ChromeDriver
、 FirefoxDriver
、 EdgeDriver
等)以及在 Docker 容器中无缝运行浏览器的能力。
从版本 5 开始,WebDriverManager 的文档已移至此处。该站点包含 WebDriverManager 的所有功能、示例、配置和高级功能。
WebDriverManager 的主要用途是驱动程序管理的自动化。要使用此功能,您需要在 WebDriverManager API 中选择给定的管理器(例如,Chrome 的chromedriver()
)并调用方法setup()
。以下示例显示了使用 JUnit 5、Selenium WebDriver 和 WebDriverManager 的测试用例的框架。
import org . junit . jupiter . api . AfterEach ;
import org . junit . jupiter . api . BeforeAll ;
import org . junit . jupiter . api . BeforeEach ;
import org . junit . jupiter . api . Test ;
import org . openqa . selenium . WebDriver ;
import org . openqa . selenium . chrome . ChromeDriver ;
import io . github . bonigarcia . wdm . WebDriverManager ;
class ChromeTest {
WebDriver driver ;
@ BeforeAll
static void setupAll () {
WebDriverManager . chromedriver (). setup ();
}
@ BeforeEach
void setup () {
driver = new ChromeDriver ();
}
@ AfterEach
void teardown () {
driver . quit ();
}
@ Test
void test () {
// Your test logic here
}
}
或者,您可以使用create()
方法自动管理驱动程序并在一行中实例化WebDriver
对象。例如如下:
import org . junit . jupiter . api . AfterEach ;
import org . junit . jupiter . api . BeforeEach ;
import org . junit . jupiter . api . Test ;
import org . openqa . selenium . WebDriver ;
import org . openqa . selenium . chrome . ChromeDriver ;
import io . github . bonigarcia . wdm . WebDriverManager ;
class ChromeCreateTest {
WebDriver driver ;
@ BeforeEach
void setup () {
driver = WebDriverManager . chromedriver (). create ();
}
@ AfterEach
void teardown () {
driver . quit ();
}
@ Test
void test () {
// Your test logic here
}
}
有关 WebDriverManager 实现的驱动程序解析算法和配置功能的更多信息,请阅读文档。
WebDriverManager 5 中提供的另一个相关新功能是能够在 Docker 容器中开箱即用地创建浏览器。使用此功能的要求是在运行测试的机器上安装 Docker 引擎。要使用它,我们需要结合给定管理器的create()
调用browserInDocker()
方法。这样,WebDriverManager 从 Docker Hub 中提取映像,启动容器,并实例化 WebDriver 对象以使用它。以下测试展示了在 Docker 中使用 Chrome 的简单示例。此示例还支持使用 noVNC 记录浏览器会话和远程访问:
import org . junit . jupiter . api . AfterEach ;
import org . junit . jupiter . api . BeforeEach ;
import org . junit . jupiter . api . Test ;
import org . openqa . selenium . WebDriver ;
import io . github . bonigarcia . wdm . WebDriverManager ;
class DockerChromeVncTest {
WebDriver driver ;
WebDriverManager wdm = WebDriverManager . chromedriver (). browserInDocker ()
. enableVnc (). enableRecording ();
@ BeforeEach
void setup () {
driver = wdm . create ();
}
@ AfterEach
void teardown () {
wdm . quit ();
}
@ Test
void test () {
// Your test logic here
}
}
WebDriverManager 是 OpenCollective 的一部分,OpenCollective 是一个面向开放透明社区的在线资助平台。您可以通过作为支持者(即个人捐赠或经常性捐款)或作为赞助商(即公司的经常性捐款)进行捐款来支持该项目。
或者,您可以通过请我一杯咖啡来认可我的工作:
WebDriverManager(版权所有 © 2015-2024)是由 Boni Garcia 创建和维护的项目,并根据 Apache 2.0 许可证条款获得许可。