当前位置:网站首页>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 …….
边栏推荐
- Operation flow of UE4 DMX and grandma2 onpc 3.1.2.5
- Yuancosmic ecological panorama [2022 latest]
- speed or tempo in classical music
- 英语必备词汇3400
- How about programmers' eyesight| Daily anecdotes
- 【做题打卡】集成每日5题分享(第三期)
- Redis6-01nosql database
- IronXL for .NET 2022.6
- An elegant program for Euclid‘s algorithm
- NEW:Devart dotConnect ADO.NET
猜你喜欢
@Transactional 注解导致跨库查询失效的问题
v-if VS v-show 2.0
Learning notes of raspberry pie 4B - IO communication (I2C)
Ubantu disk expansion (VMware)
[learning notes] month end operation -gr/ir reorganization
【软件逆向-基础知识】分析方法、汇编指令体系结构
Some enterprise interview questions of unity interview
Redis source code analysis: redis cluster
[luat-air105] 4.1 file system FS
输入的查询SQL语句,是如何执行的?
随机推荐
IPv6 experiment
NEW:Devart dotConnect ADO.NET
DECLARE_ WAIT_ QUEUE_ HEAD、wake_ up_ Interruptible macro analysis
Huawei MPLS experiment
Basic knowledge of tuples
反絮凝剂-氨碘肽滴眼液
ActiveReportsJS 3.1 VS ActiveReportsJS 3.0
SPI and IIC communication protocol
ABP vNext microservice architecture detailed tutorial - distributed permission framework (Part 2)
A brief introduction to the behavior tree of unity AI
Talk about the SQL server version of DTM sub transaction barrier function
Smart pointer shared_ PTR and weak_ Difference of PTR
优先使用对象组合,而不是类继承
Excuse me, my request is a condition update, but it is blocked in the buffer. In this case, can I only flush the cache every time?
About MySQL database connection exceptions
Learning notes of raspberry pie 4B - IO communication (I2C)
The perfect car for successful people: BMW X7! Superior performance, excellent comfort and safety
Thread Basics
SQL performance optimization skills
Basic function learning 02