使用WebDriverManager,我们可以自动下载Web Automation的驱动程序二进制文件(.exe文件)。本教程解释了WebDriverManager的 重要性以及 如何使用它?
如何使用WebDriverManager设置驱动程序二进制文件?
所有浏览器(Chrome,Firefox,Opera,IE和Microsoft Edge等)都使用可执行文件(.exe文件)实现WebDriver 协议。要创建Driver对象(对于任何浏览器),您需要事先在本地 下载相应的可执行二进制文件。
如果您熟悉Web Automation,那么以下几行对您来说非常明显,他们会为特定的浏览器找到合适的二进制文件。
- System.setProperty(“webdriver.chrome.driver”,“// path // to // chromedriver”);
- System.setProperty(“webdriver.gecko.driver”,“// path // to // geckodriver”);
- System.setProperty(“webdriver.opera.driver”,“// path // to // operadriver”);
- System.setProperty(“phantomjs.binary.path”,“// path // to // phantomjs”);
- System.setProperty(“webdriver.edge.driver”,“// path//to//MicrosoftWebDriver.exe”);
- System.setProperty(“webdriver.ie.driver”,“// path//to//IEDriverServer.exe”);
如何在Selenium中传统设置驱动程序二进制文件?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
@Test
public
void
WebDriverManagerTest
(
)
{
//Set the path to Chrome driver
System
.
setProperty
(
"webdriver.chrome.driver"
,
"E:\\Sandbox\\browserdrivers\\chromedriver.exe"
)
;
//Create driver object for Chrome
WebDriver
driver
=
new
ChromeDriver
(
)
;
//Navigate to a URL
driver
.
get
(
"http://toolsqa.com"
)
;
//quit the browser
driver
.
quit
(
)
;
}
|
什么是Selenium中的WebDriverManager?
- 这旨在自动化WebDriver二进制文件管理。
- 它将所需的驱动程序二进制文件(如果不存在于本地)下载到缓存中(默认位置〜/ .m2 / repository / webdriver)。
- 这消除了本地存储驱动程序二进制文件和维护驱动程序文件的不同版本(针对不同浏览器)的问题。
- 除非指定,否则下载最新版本的二进制文件(.exe文件)。
- 但是怎么样?只需使用以下行替换自动化中的System.setProperty()行:
WebDriverManager.chromedriver()。setup();
如何使用WebDriverManager自动设置驱动程序二进制文件?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
@Test
public
void
WebDriverManagerTest
(
)
{
//setup the chromedriver using WebDriverManager
WebDriverManager
.
chromedriver
(
)
.
setup
(
)
;
//Create driver object for Chrome
WebDriver
driver
=
new
ChromeDriver
(
)
;
//Navigate to a URL
driver
.
get
(
"http://toolsqa.com"
)
;
//quit the browser
driver
.
quit
(
)
;
}
|
如何将WebDriverManager添加为Maven依赖项?
如果您正在使用Maven 项目,那么在pom.xml中添加以下依赖项。
注意:如果您的代码位于'src'文件夹内,而不是'test'文件夹,请删除<scope>行。
1
2
3
4
5
6
|
<dependency>
<groupId>
io.github.bonigarcia
</groupId>
<artifactId>
webdrivermanager
</artifactId>
<version>
3.0.0
</version>
<scope>
test
</scope>
</dependency>
|
如何将WebDriverManager添加为Gradle依赖项?
如果您使用的是Gradle项目,请使用以下内容:
1
2
3
|
dependencies
{
testCompile
(
"io.github.bonigarcia:webdrivermanager:3.0.0"
)
}
|
在Maven / Gradle项目中对依赖项进行排序后,在Java文件中添加以下导入。
import io.github.bonigarcia.wdm.WebDriverManager;
您已准备好在自动化代码中使用WebDriverManager。驱动程序管理器可用于各种浏览器:
- WebDriverManager.chromedriver()设置();
- WebDriverManager.firefoxdriver()设置();
- WebDriverManager.operadriver()设置();
- 。WebDriverManager.phantomjs()设置();
- WebDriverManager.edgedriver()设置();
- WebDriverManager.iedriver()设置();
WebDriverManager的不同功能有哪些?
如何使用WebDriverManager启动特定版本的浏览器驱动程序?
为了您的自动化,如果您希望使用特定版本而不是最新驱动程序,可以按以下方式完成:
WebDriverManager.chromedriver()版本(“2.40”)设置()。;
这使用2.40版本的Chrome驱动程序而不是2.41(这是最新的2018年10月2日,撰写本文时)。
如何使用WebDriverManager指定平台(32位或64位)?
默认情况下,WebDriverManager使用基于执行测试用例的机器的正确二进制文件。但是如果您希望使用不同的二进制文件,那么architecture()方法就是您的朋友。它需要以下一个参数:
- github.bonigarcia.wdm.Architecture.X64
- github.bonigarcia.wdm.Architecture.X32
相同的代码将是:
。WebDriverManager.chromedriver()体系结构(io.github.bonigarcia.wdm.Architecture.X32).setup();
或者,您可以使用arch32()或arch64()来指定要使用的二进制类型。
- chromedriver()arch32()设置()。;
- chromedriver()arch64()设置()。;
如何使用WebDriverManager设置代理,用户名和密码?
如果您在一个大型组织工作,那么您将在代理服务器后面工作是很常见的。如果未向WebDriverManager指定代理详细信息,则可能会看到类似于以下内容的错误:io.github.bonigarcia.wdm.WebDriverManagerException:java.net.UnknownHostException:chromedriver.storage.googleapis.com。
让我们看看如何解决这个问题。WebDriverManager提供以下方法来设置代理详细信息(如果您的代理需要身份验证,则需要指定用户名和密码):
- 代理(“主机名:端口号”)
- PROXYUSER(“用户名”)
- PROXYPASS(“密码”)
如何一起使用Selenium webdrivermanager功能?
1
2
3
4
5
6
7
|
WebDriverManager
.
chromedriver
(
)
.
version
(
"2.40"
)
.
arch32
(
)
.
proxy
(
"myproxyhostname:80"
)
.
proxyUser
(
"myusername"
)
.
proxyPass
(
"myawesomePassword"
)
.
setup
(
)
;
|
我希望本教程很有用。请让我知道你的意见。