| |
|
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
| -> Python知识库 -> UI自动化测试框架:selenium webdriver原理 -> 正文阅读 |
|
|
[Python知识库]UI自动化测试框架:selenium webdriver原理 |
|
当我开始想要学习UI自动化测试,开始搜索相关资料时,展现在我眼前的除了经典的selenium,还有很多如puppeteer、cypress、testcafe、Airtest,我决定对提到最多的selenium、puppeteer和cypress的原理做一番研究。 SeleniumSelenium webdriver 使用WebDriver来远程控制浏览器实例, 并模拟用户与浏览器的交互。 当我们按照入门教程,在本地环境中实现了使用selenium自动化控制浏览器,完成
而,WebDriver,作为selenium的核心,却并不在这三个肉眼可见的东西里。这是怎么回事呢?我们先来看看WebDriver是什么。 WebDriverWebDriver是一个基于HTTP的协议,它提供了一系列的接口用于发现和控制 Web 文档中的 DOM 元素,几乎可以操作浏览器做任何事情。WebDriver协议的详细信息你可以在W3C WebDriver 规范中查看。 以访问亚马逊中国首页为例,代码实现为 也就是说,Selenium测试代码运行时,会向浏览器driver发送对应的HTTP请求,浏览器driver在收到请求后对浏览器进行操作,再将结果返回给Selenium测试代码。那么,如果我们先运行浏览器driver,再通过Postman向其发送HTTP请求,是不是也能控制浏览器呢?答案当然是肯定的。下面我们以在Amazon中搜索商品的操作为例,实际操作一下。 Postman发送基于WebDriver协议的HTTP请求实现UI自动化首先,启动chromedriver,双击chromedriver文件打开即可: 启动成功之后,注意到控制台中输出了chromedriver启动和监听的的端口号为9515。 然后启动Postman,我们可以开始发送基于WebDriver协议的请求了!
下面奉上完整的Postman Collection Json文件,请各位看官们自取。
浏览器driver是如何与浏览器沟通的呢?对于Chrome浏览器,ChromeDriver解析webdriver协议后,然后根据解析结果,再去调用与之对应的Chrome DevTool Protocol (CDP)协议来操控chrome浏览器,它可以和浏览器内核进行交互进而操控浏览器。关于CDP协议的具体内容,我会在puppeteer框架的原理中详细介绍。 同样地,对于Firefox浏览器,也是由geckodriver解析webdriver协议后再去调用相应的Marionette remote protocol来操控Firefox浏览器。 Chrome DevTool Protocol和Marionette remote protocol这两个协议的作用是相同的,但由于浏览器内核的不同,协议的实现是存在差别的,因此当我们想要驱动不同的浏览器时,需要下载浏览器对应的driver。 Reference |
|
|
|
|
| 上一篇文章 下一篇文章 查看所有文章 |
|
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
| 360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年12日历 | -2025/12/1 11:03:25- |
|
| 网站联系: qq:121756557 email:121756557@qq.com IT数码 |