对比
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 许可协议。转载请注明来自 冰刻无痕!
相关推荐
评论
匿名评论隐私政策
✅ 你无需删除空行,直接评论以获取最佳展示效果








