Postman实现UI自动化测试

简介: Selenium底层原理解析,源码解读。

转载请注明出处❤️

作者:测试蔡坨坨

原文链接:caituotuo.top/1db4fa44.html


你好,我是测试蔡坨坨。

看到这篇文章的标题,是不是有小伙伴会感到惊讶呢?

Postman不是做接口测试的吗?为什么还能做UI自动化测试呢?

其实,只要你了解Selenium的运行原理,就可以理解为什么Postman也能实现UI自动化测试了。

Selenium底层原理

运行代码,启动浏览器后,webdriver会将浏览器绑定到特定的端口,作为webdriver的remote server(远程服务端),而client(客户端,也就是测试脚本,可以是Python或者Java代码)会借助CommandExecutor创建sessionId,发送http请求给remote server,remote server收到http请求后,调用webdriver完成操作,并将http响应结果返回给client。

所以,本质上是调用http请求的过程,因此也就可以理解为什么可以使用Postman实现UI自动化测试。

Postman实现UI自动化测试

以上我们知道了Selenium的底层原理其实就是调用http请求的过程,那么我们要想调用接口就需要知道接口信息,包括请求方式、请求地址、请求参数、请求格式等。

这些接口信息,我们可以通过对源码的分析得到。

运行chromedriver.exe

Selenium脚本:

from selenium import webdriver
driver = webdriver.Chrome()

执行上述代码,程序会打开Chrome浏览器。(前提:已经正确配置了Chrome驱动和对应的版本)

那么,Selenium是如何实现这一过程的呢?

源码分析:

D:\Python3\Lib\site-packages\selenium\webdriver\chrome\webdriver.py

我们可以看到它执行了一个cmd命令,这个命令主要是启动chromedriver.exe浏览器驱动,我们每次执行脚本前,程序会自动帮我们启动浏览器驱动。

由于我们跳过了代码脚本,因此需要手动启动浏览器驱动。

地址及端口号:127.0.0.1:9515

新建浏览器会话

D:\Python3\Lib\site-packages\selenium\webdriver\remote\webdriver.py

继续查看源码,这里有一行重要的代码:

start_session()这个方法是向地址http://127.0.0.1:9515/session发送了一个post请求,参数是JSON格式,然后返回一个特定的响应信息给程序,主要就是新建了一个sessionId。

接口信息:

url: /session
method: POST
content_type: application/json

请求参数:

{
    "capabilities": {
        "browserName": "chrome"
    }
}

调用接口:

访问目标网站

Selenium脚本:

driver.get("https://www.baidu.com")

执行以上代码,可以访问目标网站。

源码分析:

D:\Python3\Lib\site-packages\selenium\webdriver\remote\remote_connection.py

在RemoteConnection这个类中,定义了所有selenium操作需要的接口地址(这些接口地址全部封装在浏览器驱动程序中)。

其中Command.GET: ("POST", "/session/$sessionId/url")这个地址就是实现访问一个网站的URL。

紧接着,可以看到主要是通过execute()方法调用_request()方法通过urllib3标准库向服务器发送对应操作请求地址,进而实现浏览器各种操作。

打开浏览器操作浏览器实现各种动作是通过上一步新建浏览器会话返回的sessionId实现的关联。你也会发现后面操作的各种接口地址中都存在一个$sessionId,以达到能够在同一个浏览器中做操作。

接口信息:

url: /session/$sessionId/url
method: POST
content_type: application/json

请求参数:

{
    "url": "目标网站地址"
}

调用接口:

窗口最大化

Selenium脚本:

driver.maximize_window()

源码分析:

接口信息:

url: /session/$sessionId/window/maximize
method: POST
content_type: application/json

调用接口:

元素定位

Selenium脚本:

driver.find_element(By.XPATH, "//input[@id='kw']")

源码分析:

接口信息:

url: /session/$sessionId/element
method: POST
content_type: application/json

请求参数:

{
    "using": "xpath", // 定位方式
    "value": "//input[@id='kw']" // 值
}

接口调用:

输入文本

Selenium脚本:

driver.find_element(By.XPATH, '//input[@type="text"]').send_keys("测试蔡坨坨")

源码分析:

接口信息:

url: /session/$sessionId/element/$id/value
method: POST
content_type: application/json

请求参数:

{
    "text": "测试蔡坨坨"
}

接口调用:

点击元素

Selenium脚本:

driver.find_element(By.XPATH, "//input[@id='su']").click()

源码分析:

接口信息:

url: /session/$sessionId/element/$id/click
method: POST
content_type: application/json

接口调用:

关闭浏览器

Selenium脚本:

driver.quit()

源码分析:

接口信息:

url: /session/$sessionId
method: DELETE
content_type: application/json

接口调用:

postman_collection.json

链接:https://pan.baidu.com/s/12lzuy0f-o7aVO0oYgw3OMg
提取码:ctta

相关文章
|
2月前
|
设计模式 前端开发 测试技术
告别脆弱:构建稳定UI自动化测试的3个核心策略
告别脆弱:构建稳定UI自动化测试的3个核心策略
346 113
|
3月前
|
人工智能 数据可视化 测试技术
Postman 性能测试教程:快速上手 API 压测
本文介绍API上线后因高频调用导致服务器告警,通过Postman与Apifox进行压力测试排查性能瓶颈。对比两款工具在批量请求、断言验证、可视化报告等方面的优劣,探讨API性能优化策略及行业未来发展方向。
Postman 性能测试教程:快速上手 API 压测
|
3月前
|
存储 关系型数据库 测试技术
玩转n8n测试自动化:核心节点详解与测试实战指南
n8n中节点是自动化测试的核心,涵盖触发器、数据操作、逻辑控制和工具节点。通过组合节点,测试工程师可构建高效、智能的测试流程,提升测试自动化能力。
|
3月前
|
人工智能 JavaScript 算法
Playwright携手MCP:AI智能体实现自主化UI回归测试
MCP 协议使得 AI 能够通过 Playwright 操作浏览器,其中快照生成技术将页面状态转化为 LLM 可理解的文本,成为驱动自动化测试的关键。该方式适用于探索性测试和快速验证,但目前仍面临快照信息缺失、元素定位不稳定、成本高、复杂场景适应性差以及结果确定性不足等挑战。人机协同被认为是未来更可行的方向,AI 负责执行固定流程,人类则专注策略与验证。
|
5月前
|
JSON JavaScript 测试技术
用Postman玩转电商API:一键测试+自动化请求教程
Postman 是电商 API 测试的高效工具,涵盖基础配置、自动化测试、环境管理与请求自动化,助你快速提升开发效率。
|
3月前
|
机器学习/深度学习 人工智能 测试技术
EdgeMark:嵌入式人工智能工具的自动化与基准测试系统——论文阅读
EdgeMark是一个面向嵌入式AI的自动化部署与基准测试系统,支持TensorFlow Lite Micro、Edge Impulse等主流工具,通过模块化架构实现模型生成、优化、转换与部署全流程自动化,并提供跨平台性能对比,助力开发者在资源受限设备上高效选择与部署AI模型。
398 9
EdgeMark:嵌入式人工智能工具的自动化与基准测试系统——论文阅读
|
5月前
|
XML jenkins 机器人
JMeter+Ant+Jenkins实现接口自动化测试持续集成
本文介绍了如何使用Ant生成JMeter接口测试报告,并集成到Jenkins中实现自动化测试。内容涵盖Ant与JMeter环境配置、build.xml文件设置、测试执行及报告生成,同时包括Jenkins插件安装、项目配置和钉钉消息通知的集成,帮助实现持续测试与结果可视化。
724 0
|
2月前
|
人工智能 自然语言处理 JavaScript
Playwright MCP在UI回归测试中的实战:构建AI自主测试智能体
Playwright MCP结合AI智能体,革新UI回归测试:通过自然语言驱动浏览器操作,降低脚本编写门槛,提升测试效率与覆盖范围。借助快照解析、智能定位与Jira等工具集成,实现从需求描述到自动化执行的闭环,推动测试迈向智能化、民主化新阶段。
|
3月前
|
自然语言处理 前端开发 测试技术
使用 Playwright MCP 实现 UI 自动化测试
本文介绍如何结合Playwright与MCP协议实现智能化UI自动化测试。通过自然语言指令控制浏览器,降低技术门槛,提升效率,并涵盖环境搭建、核心功能、实战案例及最佳实践,展现对话式自动化的未来趋势。

热门文章

最新文章