当前位置:网站首页>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 …….
边栏推荐
- [数组]566. 重塑矩阵-简单
- Difference between MotionEvent. getRawX and MotionEvent. getX
- v-if VS v-show 2.0
- Installation of postman and postman interceptor
- Logstash、Fluentd、Fluent Bit、Vector? How to choose the appropriate open source log collector
- Basic function learning 02
- 面试汇总:这是一份全面&详细的Android面试指南
- [安洵杯 2019]不是文件上传
- FBO and RBO disappeared in webgpu
- The latest blind box mall, which has been repaired very popular these days, has complete open source operation source code
猜你喜欢
[C language] address book - dynamic and static implementation
IPv6 experiment
v-if VS v-show 2.0
[software reverse analysis tool] disassembly and decompilation tool
UI自动化测试从此告别手动下载浏览器驱动
JWT漏洞复现
Thread Basics
How about programmers' eyesight| Daily anecdotes
【web源码-代码审计方法】审计技巧及审计工具
The perfect car for successful people: BMW X7! Superior performance, excellent comfort and safety
随机推荐
ABP vNext microservice architecture detailed tutorial - distributed permission framework (Part 1)
Cette ADB MySQL prend - elle en charge SQL Server?
Pdf things
error Couldn‘t find a package.json file in “你的路径“
[105] Baidu brain map - Online mind mapping tool
About MySQL database connection exceptions
IronXL for .NET 2022.6
[web source code code code audit method] audit skills and tools
Flex flexible layout
[Chongqing Guangdong education] 2777t green space planning reference questions of National Open University in autumn 2018
KVM virtualization
灵魂三问:什么是接口测试,接口测试怎么玩,接口自动化测试怎么玩?
【做题打卡】集成每日5题分享(第三期)
An elegant program for Euclid‘s algorithm
Why do some programmers change careers before they are 30?
Web components series (VII) -- life cycle of custom components
Technology sharing swift defense programming
Subversive cognition: what does SRE do?
Delphi read / write JSON format
[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)