Postman 实现 UI 自动化测试

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

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

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

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

Selenium 底层原理

运行代码启动浏览器后webdriver 会将浏览器绑定到特定的端口作为 webdriver 的 remote server远程服务端而 client客户端也就是测试脚本可以是 Python 或者 Java 代码会借助 CommandExecutor 创建 sessionId发送 http 请求给 remote serverremote 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

接口调用
在这里插入图片描述
最后下方这份完整的自动化测试视频学习教程已经整理上传完成朋友们如果需要可以自行免费领取 【保证100%免费】

)

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6