当前位置:网站首页>UI automation test farewell to manual download of browser driver
UI automation test farewell to manual download of browser driver
2022-07-05 03:49:00 【Little brother said test】
Thank you for your time


“Everyone is doing UI When automating , What is the most annoying , Is it element positioning or browser and driver compatible debugging ? Let's move on
”

One .SeleniumWebDriver
SeleniumWebDriver Is a program that allows control Web Browser Library . It provides a cross browser API, Can be used to drive using different programming languages ( Such as Java、JavaScript、Python、C# or Ruby) Browser ( Such as Chrome、Edge or Firefox etc. ).Selenium WebDriver The main purpose of is to realize Web Automated testing of applications .
SeleniumWebDriver Use the native support of each browser to automate . For this reason , We need to use Selenium WebDriver API A browser named Driver Binary file . Now the drivers of mainstream web browsers are ChromeDriver (Chrome) ,geckoDriver (Firefox) , perhaps msededriver (Edge).WebDriver API The communication with the driver binary file is called W3C WebDriver( Formerly known as JSON Wire Protocol) The standard agreement of . then , Use the native function of each browser to complete the communication between the driver and the browser .
We manually download the corresponding version of the corresponding browser according to different browsers and browser versions driver, Set system properties .
System.setProperty("webdriver.chrome.driver", "/path/to/chromedriver");
System.setProperty("webdriver.gecko.driver", "/path/to/geckodriver");
System.setProperty("webdriver.edge.driver", "/path/to/msedgedriver");
System.setProperty("webdriver.opera.driver", "/path/to/operadriver");
System.setProperty("webdriver.ie.driver", "C:/path/to/IEDriverServer.exe");
We're doing it UI When automating, we often encounter browser upgrades that lead to driver Version mismatch problem , The solution is to manually download the corresponding version driver, For starters , It's not a simple job , Is there any way to automatically download the corresponding version according to different browsers driver Well ? The answer is yes , This is what we are talking about this time WebDriverManager. Yes Java and Python They all support it .
Two .WebDriverManager brief introduction
WebDriverManager It's an open source Java library , Of course, there are Python edition , It is executed in a fully automated way Selenium WebDriver Management of required drivers ( For example, download 、 Setup and maintenance ). in addition , In version 5 in ,WebDriverManager Other related functions are also provided , For example, find the browser installed in the local system , structure WebDriver object ( Such as ChromeDriver、FirefoxDriver、 EdgeDriver etc. ) , stay Docker The browser runs seamlessly in the container , And monitoring function .
3、 ... and .WebDriverManager actual combat (Java edition )
1.pom.xml Add WebDriverManager rely on
<dependency>
<groupId>io.github.bonigarcia</groupId>
<artifactId>webdrivermanager</artifactId>
<version>5.0.3</version>
<exclusions>
<exclusion>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
</exclusion>
</exclusions>
</dependency>
2. Create a new test script , To test the
import io.github.bonigarcia.wdm.WebDriverManager;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
/**
* @author author : The way test engineers grow up
* @version Creation time :2022/7/3
* Class description : Automatic download Chrome Browser driven
*/
public class OperateBrowserDriver {
public static void main(String[] args) throws InterruptedException {
WebDriverManager.chromedriver().setup();
WebDriver driver = new ChromeDriver();
driver.get("http://www.cnblogs.com/mrjade/");
Thread.sleep(1000);
driver.quit();
}
}
3. Execution results

4.driver Storage path ( With Macos For example )

Four .WebDriverManager actual combat (Python edition )
1. install
pip install webdriver-manager
2. Use
# coding=utf-8
'''
@Author : The way test engineers grow up
@Time : 2022/7/3 12:13
@Desc : Methods described
@Software: PyCharm
'''
import time
from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
driver = webdriver.Chrome(ChromeDriverManager().install())
driver.get("https://www.baidu.com/")
time.sleep(5)
driver.quit()
3. Execution results

4.driver Storage path ( With Macos For example )

Four . Official documents
For more browser operations, please refer to the official website documentation
https://bonigarcia.dev/webdrivermanager/
Learning resource sharing
Finally, thank everyone who reads my article carefully , Watching the rise and attention of fans all the way , Reciprocity is always necessary , Although it's not very valuable , If you can use it, you can take it

These materials , For thinking 【 Advanced test development 】 For our friends, it should be the most comprehensive and complete war preparation warehouse , This warehouse also accompanied me through the most difficult journey , I hope it can help you ! Everything should be done as soon as possible , Especially in the technology industry , We must improve our technical skills . I hope that's helpful …….

边栏推荐
- Installation of postman and postman interceptor
- [vérification sur le Web - divulgation du code source] obtenir la méthode du code source et utiliser des outils
- 输入的查询SQL语句,是如何执行的?
- Timing manager based on C #
- JWT vulnerability recurrence
- Thread Basics
- [learning notes] month end operation -gr/ir reorganization
- [punch in questions] integrated daily 5-question sharing (phase III)
- Cette ADB MySQL prend - elle en charge SQL Server?
- v-if VS v-show 2.0
猜你喜欢

An elegant program for Euclid‘s algorithm

Multi person online anonymous chat room / private chat room source code / support the creation of multiple chat rooms at the same time
![[C language] address book - dynamic and static implementation](/img/eb/07e7a32a172e5ae41457cf8a49c130.jpg)
[C language] address book - dynamic and static implementation

灵魂三问:什么是接口测试,接口测试怎么玩,接口自动化测试怎么玩?

Timing manager based on C #
![[system security] ten thousand words summary system virtualization container bottom layer principle experiment](/img/c6/1bdb29a0acb0739f67b882fa6b3b47.jpg)
[system security] ten thousand words summary system virtualization container bottom layer principle experiment

Subversive cognition: what does SRE do?

The perfect car for successful people: BMW X7! Superior performance, excellent comfort and safety

Talk about the SQL server version of DTM sub transaction barrier function

Redis source code analysis: redis cluster
随机推荐
DMX parameter exploration of grandma2 onpc 3.1.2.5
[software reverse - basic knowledge] analysis method, assembly instruction architecture
Clean up PHP session files
v-if VS v-show 2.0
FBO and RBO disappeared in webgpu
Talk about the SQL server version of DTM sub transaction barrier function
汇编-入门
[groovy] loop control (number injection function implements loop | times function | upto function | downto function | step function | closure can be written outside as the final parameter)
[vérification sur le Web - divulgation du code source] obtenir la méthode du code source et utiliser des outils
SPI and IIC communication protocol
It took two nights to get Wu Enda's machine learning course certificate from Stanford University
MySQL winter vacation self-study 2022 11 (10)
Yyds dry goods inventory embedded matrix
[groovy] groovy environment setup (download groovy | install groovy | configure groovy environment variables)
Kubernetes - identity and authority authentication
Containerization Foundation
Why is there a reincarnation of 60 years instead of 120 years in the tiangan dizhi chronology
【无标题】
ICSI213/IECE213 Data Structures
深度学习——LSTM基础