对比
web自动化测试技术方案的对比
- 自动化控制浏览器
- 自动化控制页面内容
- 执行高级的指令(
js
代码)
搭建Selenium
自动化测试环境
Web
自动化测试原理:
Python > 浏览器 ×
Python > selenium > 浏览器驱动 > 浏览器 √
关键:
- selenium
- 浏览器驱动
安装selenium
这里简单介绍我安装的插件和版本,详情可以去看我的另一篇文章 配置 Selenium。
这里再推荐一个浏览器驱动下载网站:
python 3.10
1 | pip install selenium |
安装浏览器驱动
- 操作系统类型:Windows
- 浏览器类型:chrome
- 浏览器版本:107.0.5304.122
一件搭建自动化环境
webdriver_helper:
- 自动判断浏览器类型,版本,操作系统
- 自动选择和下载浏览器驱动
- 自动启动浏览器
下载包:
使用方式:
1 | from webdriver_helper import get_webdriver |
这里再说明一下,如果你用的是默认的Google chrome
,可以不用在括号里面添加chrome
(可填可不填),如果你想用Firefox
浏览器,就在括号里面添加浏览器名。
使用简单代码:
1 | from webdriver_helper import get_webdriver |
对浏览器的控制
selenium
是【面向对象】思路 来提供自动化操作:
- 获取数据:访问对象的属性
- 操作数据:调用对象的方法
元素定位
参数使用方法:
方法 | 作用 |
---|---|
maximize_window() | 窗口最大化 |
get(url) | 跳转指定页面 |
refresh() | 刷新 |
back() | 后退 |
forward() | 前进 |
get_screenshot_as_png() | 截图的base64 内容 |
get_screenshot_as_file(path) | 截图保存到文件 |
current_url | 网址 |
page_source | 源码 |
current_window_handle | 当前窗口 |
window_handles | 所有窗口 |
switch_to.alert | 处理弹窗 |
switch_to.frame(“frame_name”) | 切换框架 |
switch_to.window(“window_name”) | 切换窗口 |
简单使用:
1 | from webdriver_helper import get_webdriver |
Selenium
提供了8个定位策略:
定位器 | 描述 |
---|---|
id | 定位id 属性于搜索值匹配的元素(整个网页唯一性) |
name | 定位name 属性与搜索值匹配的元素 |
tag name | 定位标签名称与搜索匹配的元素 |
class name | 定位属性与搜索值匹配的元素(不允许使用复合类名) |
link text | 定位link text 可视文本与搜索值完全匹配的锚元素 |
partial link text | 定位link text 可视文本部分与搜索部分匹配的锚点元素 |
xpath | 定位于XPath 表达匹配的元素 |
css selector | 定位CSS 选择器匹配的元素 |
核心思想:从页面中无数的元素中,定位指定的那一个
根据属性进行定位:
1 | <!-- tag_name --> |
1 | from webdriver_helper import get_webdriver |
文本定位
定位到的都是a
标签 超链接
1 | <a href="http://image.baidu.com/" target="_blank" class="mnav c-font-normal c-color-t">图片</a> |
表达式定位
根据表达式进行定位 所有元素
CSS选择器
XPath
XPath
基本语法1
2
3
4
5
6
7//*[@id="su"]
//* 从任意节点 定位任意id属性等于元素
//*[@id="su"]
//*[@id="kw"]
/html/body/div[1]/div[2]/div[5]/div[1]/div/form/span[1]
字符 | 含义 |
---|---|
input | 选择所有的input 元素 |
* | 选择所有的元素 |
/ | 从当前中选择元素 |
// | 从当前节点及以下的任意节点中选择元素 |
. | 当前节点 |
.. | 父节点 |
@ | 根据属性进行筛选元素 |
[n] | 返回列结果第N 项目 |
XPath函数
- text:获取文本,进行精确匹配
- contains:对文本进行模糊匹配
- starts-with:对文本进行起始内容匹配(模糊匹配)
对元素的控制
selenium
通过【面向对象】方式提供自动化控制。
- 属性
- 方法
对浏览器的控制:WebDriver
对象的调用
对元素的控制:WebElement
对象的调用
属性 | 内容 | 例子 |
---|---|---|
id | 唯一标记 | 36f-6a18 |
tag_name | 标签名 | input |
location | 元素坐标 | {‘x’:198,’y’:188} |
size | 元素大小 | {‘height’:44,’width’:548} |
rect | 元素范围 | {‘height’:44,’width’:548,‘x’:198,’y’:188} |
parent | WebDriver 实例 | 略 |
screenshot_as_base64() | 截图base64 内容 | iVBORw0KGgoAAAAN…… |
screenshot_as_png() | 截图二进制内容 | b’\x89PNG\r\n\x1a\n\x00.….. |
get_attribute(name) | 获取元素的HTML 属性 | |
value_of_css_property | 获取CSS 属性 | |
click() | 点击 | |
clear() | 清空内容 | |
send_keys(content) | 输入内容 |
基础操作:
1 | from webdriver_helper import get_webdriver |
Web自动化实战
- 打开被测页面
- 输入关键字
- 点击搜索按钮
- 遍历搜索结果
- 断言 搜索结果都包含指定的关键字
1 | from webdriver_helper import get_webdriver |
打赏作者
文章作者: 冰梦
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 冰刻无痕!
相关推荐
评论
匿名评论隐私政策
✅ 你无需删除空行,直接评论以获取最佳展示效果