电子商务网站建设 教材,大学html网站建设作业,静态网页是什么意思,做影视网站什么cms好用“阅读本文大概需要4分钟。Postman不是做接口测试的吗#xff1f;为什么还能做UI自动化测试呢#xff1f;
其实#xff0c;只要你了解Selenium的运行原理#xff0c;就可以理解为什么Postman也能实现UI自动化测试了。
Selenium底层原理
运行代码#xff0c;启动浏览器后… “阅读本文大概需要4分钟。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[idkw])源码分析 接口信息
url: /session/$sessionId/element
method: POST
content_type: application/json请求参数
{using: xpath, // 定位方式value: //input[idkw] // 值
}接口调用 输入文本
Selenium脚本
driver.find_element(By.XPATH, //input[typetext]).send_keys(测试蔡坨坨)源码分析 接口信息
url: /session/$sessionId/element/$id/value
method: POST
content_type: application/json请求参数
{text: 测试蔡坨坨
}接口调用 点击元素
Selenium脚本
driver.find_element(By.XPATH, //input[idsu]).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接口调用 如果文章对你有帮助记得点赞收藏加关注。会不定期分享一些干货哦...... 最后感谢每一个认真阅读我文章的人看着粉丝一路的上涨和关注礼尚往来总是要有的虽然不是什么很值钱的东西如果你用得到的话可以直接拿走 这些资料对于想做【软件测试】的朋友来说应该是最全面最完整的备战仓库这个仓库也陪伴我走过了最艰难的路程希望也能帮助到你凡事要趁早特别是技术行业一定要提升技术功底。希望对大家有所帮助……加入我的学习交流群一起学习交流讨论把