web 自动化实战基础
发表于|更新于|学习笔记
|总字数:1.9k|阅读时长:7分钟|浏览量:
对比
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 许可协议。转载请注明来源 冰刻无痕!
相关推荐

2022-12-12
JMeter和java8安装
jdk下载和安装 注:因为JMeter运行需要依赖jdk环境,所以在安装JMeter之前需要配置安装jdk且配置好环境变量,需要jdk8以上的版本(这里推荐安装java8版本就够了)。 jdk下载: 引用站外地址 JMeter 下载地址 这里就不截图了,找到自己的系统版本,下载就可以了。 注:这里下载需要一个登录账号,你需要注册一个。 jdk安装点击安装包,并点击下一步。 后面还有jre安装,路径记得更改。 配置环境变量 环境配置 打开高级系统设置(用系统的搜索就可以找到),打开环境变量,在系统变量下创建一个JAVA_HOME变量名,并且找到你的jdk安装路径。 123变量名:JAVA_HOME变量值:jdk的安装路径 这里再添加一个ClassPath变量,方法和java-home一样,在系统变量下创建一个ClassPath变量,引入变量值。 12变量名:ClassPath变量值:.;%JAVA_...

2023-01-05
Pytest介绍和教程
pytest简介 pytest是一个非常成熟的python的单元框架,比unittest更灵活,容易上手。 pytest可以和selenium,requests,appium结合实现web自动化,接口自动化,app自动化 pytest可以实现测试用例的跳过以及reruns失败用例重试。 pytest可以和allure生成非常美观的测试报告。 pytest可以和Jenkins持续集成。 pytest有很多非常强大的插件,并且这些插件能够实现很多实用的操作。 单元测试框架 单元测试框架是指在软件开发中,针对软件的最小单位(函数,方法)进行正确性的检查测试 单元测试所需要的框架: java:junit和testing python:unittest和pytest 单元测试框架主要使用: 测试发现:从多个文件里面找到我们的测试用例 测试执行:按照一定的顺序和规则去执行,并生成结果 测试判断:通过断言判断预期结果和实际结果的差异 测试报告:统计测试进度,耗时,通过率,生成测试报告 单元测试框架和自动化的关系 提高测试效率,降低维护成本 减少人工干预。提高测试...

2022-12-09
Selenium 基本用法
基本用法使用Selenium我们需要将浏览器渠道添加到环境变量或者绝对路径,前者可以初始化后者需要进行指定。 这里用的是Firefox浏览器,可以用Google chrome来执行 12345678910111213from selenium import webdriver# 初始化浏览器为chrome浏览器browser = webdriver.Chrome()# 指定绝对路径的方式path = r'D:\drivers\chromedriver\chromedriver.exe'browser = webdriver.Firefox(path)# 强制等待time.sleep(5)# 关闭浏览器browser.close() 这样我们看到的是运行成功的的标志,这里我们可以启动为无界面的浏览器 1234567891011121314151617from selenium import webdriverimport time# 无界面的浏览器option = webdriver.ChromeOptions()option.add_argument(...

2023-01-14
Web 自动化框架封装
为什么要进行框架封装 定位等待之类细枝末节的事情 UI 操作代码需要可重用 对测试用例 分类、筛选、管理 POM 框架封装pom是 UI 自动化测试一种主流的设计模式 page object model 页面对象模式 将页面作为对象模型,来进行框架封装: 创建类:这个 类 代表 页面 定义属性:这些属性 代表 页面中的元素 12LazyElement() # 定位单个元素LazyElementList() # 定位多个元素 定义方法:这些个方法 代表 对页面的操作 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758import timefrom webdriver_helper import get_webdriverfrom webdriver_helper.pom import *class IndexPage(BasePage): """首页"&...

2023-01-05
allure安装配置和简单使用
记录配置allure的过程和简单的使用 检查是否有java的运行环境 win+r输入cmd回车,打开终端窗口 输入Java回车 如果没有显示就代表你的电脑没有安装Java运行环境,可以参考我的其中的一个教程,那里有关于Java的安装过程 JMeter和java8安装 下载allure 引用站外地址 allure allure下载地址 如果下载慢可以使用以下链接,不过它更新速度比较慢,不过也够用了。 引用站外地址 allure allure下载地址 配置allure 把下载好的allure压缩包放到你需要解压的文件夹下。 进入到allure文件夹下,找到bin目录。 找到allure.exe,cd到此目录下运行allure.e...

2022-01-15
学习笔记
测试常用分类按阶段划分 单元测试:针对程序源代码进行测试 集成测试:又称接口测试,主要针对模块与模块或系统与系统之间的接口进行验证 系统测试:针对软件全面进行验证(功能,兼容性,文档) 验收测试:使用内测,公测来实现 内测:公司内部进行验证 公测:让玩家来进行测试 按代码可见度划分 黑盒测试:看不见源代码,主要对程序功能进行测试 灰盒测试:看见部分代码,主要对程序接口进行测试 白盒测试:看见全部代码,主要对程序源代码进行测试 扩展-总结: 系统测试和黑盒测试重点核心是功能测试 集成测试和灰盒测试又称接口测试 单元测试和白盒测试是对代码进行测试 自动化测试归属功能测试 性能测试、安全测试归属专项测试 扩展-测试策略 冒烟测试:大规模测试之前,针对程序主功能进行测试,保证程序具备可测试性。 面试题:提测试标准时什么? – 冒烟测试通过!测试之前要怎么做?–冒烟测试。 模型 质量模型 测试模型 质量模型学到了什么?–针对任何软件或硬件,测试要覆盖的方面 重点:功能、兼容、性能、易用性、安全 W模型学到了什么?–软件开发流程、软件测在开发的作用 开发流...
评论