Python+SeleniumWEB自动化
2022-05-26 13:09:21 2 举报
AI智能生成
Web端自动化测试脑图及案例资源,主要包括自动化测试理论指导,基于 Python 3.x + Selenium 3.x 技术栈,以案例驱动方式为核心驱动
作者其他创作
大纲/内容
教学目标
自动化测试理论化指导
能够理论结合工具开展自动化测试
课程方法
案例驱动
举一反三
问题自由探讨解决
初级篇
理论指导
自动化简述
认识自动化测试
应用场景及局限性
案例驱动
项目简介
测试用例
技术选型
市面常见自动化测试工具
开源翘楚 Selenium 家族史
搭建 Python 3.x + Selenium 3.x 测试环境
一本手册闯江湖
学以致用
任务:百度一下,你就知道
任务描述:
1. Selenium的测试环境准备
2. 新建测试脚本文件“baidu_auto_search.py”,用于存放本案例脚本
3. 编写脚本,实现根据关键字自动进行百度搜索操作
4. 退出浏览器,结束本次测试
任务描述:
1. Selenium的测试环境准备
2. 新建测试脚本文件“baidu_auto_search.py”,用于存放本案例脚本
3. 编写脚本,实现根据关键字自动进行百度搜索操作
4. 退出浏览器,结束本次测试
案例驱动(上)
线性版自动化测试脚本
登录场景脚本编写
WebDriver API 初探
浏览器的常用操作
Web页面元素的定位操作
Web页面元素的基本操作
模块版自动化测试脚本
线性脚本函数化重构
复用登录脚本
登录用例的编写(正反各一例)
学以致用
任务:登录增强版
任务描述:针对被测程序的登录模块,应用决策表法编写至少8条用例,并将其脚本化。
项目平台:http://iwebsns.bljt.top/
任务描述:针对被测程序的登录模块,应用决策表法编写至少8条用例,并将其脚本化。
项目平台:http://iwebsns.bljt.top/
案例驱动(下)
Page Object Model
POM简介
实现指导
可以使用 2个模块/包 来构造设计模式
页面层(Page Layer):将被测程序的页面作为单独的类保存,每个类将具有声明为变量的WebElements和作为方法执行的动作。
测试层(Test Layer):将保存被测程序及其验证部分的测试用例。
页面层(Page Layer)
为被测程序的每个页面创建一个类
在每个类中,将所有Web元素声明为变量
为在Web元素上执行的操作创建方法
测试层(Test Layer)
初始化浏览器驱动实例并打开被测程序
为每个网页创建PageLayer类的实例对象,并将驱动实例作为参数传递
使用创建的对象,调用PageLayer类(针对每个网页)中的方法以执行操作/验证
重复步骤3,直到执行了所有操作,然后关闭驱动实例
优点
更易维护, 任何用户界面更改都将反映该类中使用的任何位置
健壮并使代码可读(方法具有更真实的名称)
提高代码的可重用性(对象存储库独立于测试用例)
代码优化,使代码变得更少
单元测试框架集成
unittest 框架
测试用例(TestCase)
测试脚手架(TestFixure)
测试套件(TestSuite)
测试扫描器(TestLoader)
测试运行器(TextTestRunner)
POM增强
截图管理
截图时机
_outcome.errors
常用截图方法
selenium内置截图
browser.get_screenshot_as_base64()
browser.get_screenshot_as_file()
python第三方截图
pillow
日志管理
标准库
logging
第三方库
loguru
测试报告
HTMLTestRunnerCN
BeautifulReport
邮件发送
yagmail
学以致用
任务:登录&注册POM
任务描述:针对被测程序的登录和注册场景,应用POM设计模式编写自动化测试脚本,实现测试报告的生成及邮件发送。
项目平台:http://iwebsns.pansaifei.com/
任务描述:针对被测程序的登录和注册场景,应用POM设计模式编写自动化测试脚本,实现测试报告的生成及邮件发送。
项目平台:http://iwebsns.pansaifei.com/
扩展技能
WebDriver API 再详解
浏览器操作
selenium.webdriver.remote.webdriver
最大化
browser.maximize_window()
最小化
browser.minimize_window()
前进
后退
标题
地址
定位
cookies
元素定位
selenium.webdriver.remote.webdriver
单元素定位
find_element_by_xxx("xxx")
id
name
class_name
tag_name
link_text
partial_link_text
css_selector
xpath
find_element(By.XXX, "xxx")
ID
NAME
CLASS_NAME
TAG_NAME
LINK_TEXT
PARTIAL_LINK_TEXT
CSS_SELECTOR
XPATH
多元素定位
find_elements_by_xxx("xxx")
id
name
class_name
tag_name
link_text
partial_link_text
css_selector
xpath
find_elements(By.XXX, "xxx")
ID
NAME
CLASS_NAME
TAG_NAME
LINK_TEXT
PARTIAL_LINK_TEXT
CSS_SELECTOR
XPATH
元素操作
selenium.webdriver.remote.webelement
输入
点击
文本内容
元素状态
子元素定位
元素等待
time.sleep
呆板等待点
selenium.webdriver.remote.webdriver
browser.implicitly_wait(seconds)
隐式等待点,全局等待点
selenium.webdriver.support.wait
WebDriverWait(browser, seconds).until(lambda x: expression)
显式等待点,特有情况
框架层切换
selenium.webdriver.remote.webdriver
browser.switch_to.frame()
browser.switch_to.parent_frame()
browser.switch_to.default_content()
下拉列表
selenium.webdriver.support.select
模拟键鼠操作
selenium.webdriver.common.action_chains
悬停
拖拽
右击
双击
单击
键盘
键盘按键
selenium.webdriver.common.keys
多窗口切换
selenium.webdriver.remote.webdriver
browser.current_window_handle
browser.window_handles
browser.switch_to.window(window)
警告框处理
selenium.webdriver.common.alert
browser.switch_to.alert
accept()
dismiss()
send_keys()
text
页面截图
selenium.webdriver.remote.webdriver
browser.get_screenshot_as_file()
browser.get_screenshot_as_base64()
验证码处理
关闭验证码
绕过验证码
识别验证码
pytesseract 模块
机器学习之验证码识别
文件上传、下载
普通上传
send_keys
插件上传
autoIT
pywin32 模块
SendKeys 模块
下载
Firefox 文件下载(FirefoxProfile)
browser.download.dir
browser.download.folderList
browser.download.manager.showWhenStarting
browser.helperApps.neverAsk.saveToDisk
Chrome 文件下载(ChromeOptions)
download.default_directory
profile.default_content_settings.popups
异常处理
selenium.common.exceptions
调用 JavaScript 代码
selenium.webdriver.remote.webdriver
Selenium IDE
浏览器扩展安装
Chrome ---> 谷歌商店 ---> 搜索
Firefox ---> 附加组件 --> 扩展 ---> 搜索
录制及使用
导出脚本
Selenium Grid
应用场景
在多种浏览器,多种版本的浏览器,不同操作系统里的浏览器里执行你的测试
缩短完成测试的时间
环境配置
官方配置
第三方集成
确认 visgrid 与 selenium 版本匹配
visgrid 的浏览器驱动与本机浏览器版本要对应
启动 visgird
java -jar visgrid-1.25.jar
配置 hub 和 node
执行过程
乘 Jenkins 全自动化
Jenkins 环境准备
Selenium 自动化配置
创建新任务
配置任务
构建任务
Jenkins 配置
综合案例
POM 设计模式
WebDriver API 使用
学以致用
任务:大展身手
任务描述:针对被测项目注册模块、登录(登录、注销)模块、日志模块(创建、编辑、删除、查看日志)编写自动化测试脚本,实现测试报告的生成及邮件发送。
项目平台:http://iwebsns.pansaifei.com/
任务描述:针对被测项目注册模块、登录(登录、注销)模块、日志模块(创建、编辑、删除、查看日志)编写自动化测试脚本,实现测试报告的生成及邮件发送。
项目平台:http://iwebsns.pansaifei.com/
推荐书籍
配套章节源代码
《Selenium官方文档》
《Selenium3自动化测试实战――基于Python语言》
0 条评论
下一页
为你推荐
查看更多