• UI自动化测试从此告别手动下载浏览器驱动


    感谢您抽出

    大家在做UI自动化的时候,最烦的是什么呢,是元素定位还是浏览器与驱动兼容调试?我们接着往下看

    一.SeleniumWebDriver

    SeleniumWebDriver是一个允许以编程方式控制Web浏览器的库。它提供了一个跨浏览器的API,可用于驱动使用不同编程语言(如JavaJavaScriptPythonC# 或Ruby)的浏览器(如ChromeEdgeFirefox等)。Selenium WebDriver 的主要用途是实现Web应用程序的自动化测试。

    SeleniumWebDriver使用每个浏览器的本机支持实现自动化。出于这个原因,我们需要在使用Selenium WebDriver API的测试和要控制的浏览器之间放置一个名为Driver的二进制文件。现在主流网页浏览器的驱动程序有ChromeDriver (Chrome) ,geckoDriver (Firefox) ,或者msededriver (Edge)WebDriver API和驱动程序二进制文件之间的通信是使用名为W3C WebDriver(以前称为JSON Wire Protocol)的标准协议完成的。然后,使用每个浏览器的本机功能完成驱动程序和浏览器之间的通信。

    我们根据不同浏览器以及浏览器版本去手动下载对应浏览器的相应版本的driver,设置系统属性。

    1. System.setProperty("webdriver.chrome.driver""/path/to/chromedriver");
    2. System.setProperty("webdriver.gecko.driver""/path/to/geckodriver");
    3. System.setProperty("webdriver.edge.driver""/path/to/msedgedriver");
    4. System.setProperty("webdriver.opera.driver""/path/to/operadriver");
    5. System.setProperty("webdriver.ie.driver""C:/path/to/IEDriverServer.exe");

    我们在做UI自动化的时候经常会遇到浏览器升级导致与driver版本不匹配的问题,解决办法就是手动下载对应版本的driver,对于初学者,这并不是一个简单的工作,有没有什么办法可以根据不同浏览器自动下载对应版本的driver呢?答案肯定是有的,就是我们本次要讲的WebDriverManager。对JavaPython都支持哦。

    二.WebDriverManager简介

    WebDriverManager是一个开源的Java库,当然也有Python版本,它以完全自动化的方式执行Selenium WebDriver所需的驱动程序的管理(例如下载、设置和维护)。另外,在版本5中,WebDriverManager还提供了其他相关功能,比如发现安装在本地系统中的浏览器,构建WebDriver对象(如ChromeDriverFirefoxDriver、 EdgeDriver等) ,在Docker容器中无缝运行浏览器,以及监控功能。

    三.WebDriverManager实战(Java版)

    1.pom.xml中添加WebDriverManager依赖

    1. <dependency>
    2.     <groupId>io.github.bonigarcia</groupId>
    3.     <artifactId>webdrivermanager</artifactId>
    4.     <version>5.0.3</version>
    5.     <exclusions>
    6.         <exclusion>
    7.             <groupId>com.google.guava</groupId>
    8.             <artifactId>guava</artifactId>
    9.         </exclusion>
    10.      </exclusions>
    11. </dependency>

    2.新建一个测试脚本,来测试下

    1. import io.github.bonigarcia.wdm.WebDriverManager;
    2. import org.openqa.selenium.WebDriver;
    3. import org.openqa.selenium.chrome.ChromeDriver;
    4. /**
    5.  * @author 作者:测试工程师成长之路
    6.  * @version 创建时间:2022/7/3
    7.  * 类说明:自动下载Chrome浏览器驱动
    8.  */
    9. public class OperateBrowserDriver {
    10.     public static void main(String[] args) throws InterruptedException {
    11.         WebDriverManager.chromedriver().setup();
    12.         WebDriver driver = new ChromeDriver();
    13.         driver.get("http://www.cnblogs.com/mrjade/");
    14.         Thread.sleep(1000);
    15.         driver.quit();
    16.     }
    17. }

    3.执行结果

    4.driver存放路径(以Macos为例)

    四.WebDriverManager实战(Python版)

    1.安装

    pip install webdriver-manager
    

    2.使用

    1. # coding=utf-8 
    2. '''
    3.  @Author  : 测试工程师成长之路
    4.  @Time    : 2022/7/3 12:13
    5.  @Desc    : 方法描述
    6.  @Software: PyCharm
    7. '''
    8. import time
    9. from selenium import webdriver
    10. from webdriver_manager.chrome import ChromeDriverManager
    11. driver = webdriver.Chrome(ChromeDriverManager().install())
    12. driver.get("https://www.baidu.com/")
    13. time.sleep(5)
    14. driver.quit()

    3.执行结果

    4.driver存放路径(以Macos为例)

    四.官方文档

    更多浏览器操作请参考官网文档
    https://bonigarcia.dev/webdrivermanager/

    学习资源分享

    最后感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走

    这些资料,对于想【进阶测试开发】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!凡事要趁早,特别是技术行业,一定要提升技术功底。希望对大家有所帮助…….

  • 相关阅读:
    【程序的编译(预处理操作)+链接】
    测试行业干了5年,从只会点点点到了现在的测试开发,总算是证明了自己
    43-异常
    源码安装python
    始祖双碳新闻 | 2022年8月4日碳中和行业早知道
    OkHttp相关知识(二)
    四十年编程感悟
    arm cortex-a9的qemu仿真与启动文件解释
    k8s部署skywalking
    qt中实现多语言功能
  • 原文地址:https://blog.csdn.net/jiangjunsss/article/details/125599808