项目介绍
1.待测功能模块
文章发布流程:
- 新建文章(自媒体端)
- 审核文章(后台管理系统)
- 查看文章(APP端)
2.UI自动化测试目标
文章发布及查看流程
3.所需子系统
- 自媒体Web端(发布文章)
- 后端管理web端(审核文章)
- App应用(查看文章)
UI自动化测试
1.Selenium Grid
1.1Selenium Grid介绍
Selenium包含三大组件:Selenium RC,Selenium IDE,Selenium Grid
Selenium Grid的作用就是实现分布式执行测试用例,允许在多个机器和浏览器上并行运行 Selenium 测试。它可以提高测试的速度和效率,尤其是当有大量测试用例需要执行时。
1.2Selenium Grid工作原理
Selenium Grid的分布式结构就是由一个hub节点和若干个node代理节点组成。Hub用来管理各个代理节点的注册信息和状态信息,并且接受远程客户端代码的请求调用,然后把请求的命令转发给代理节点来执行。
Selenium Grid 的工作原理包括以下步骤:
启动 Hub:Hub 是中央控制点,用于接收测试请求并将其分发到合适的节点。
启动命令:
java -jar selenium-server-standalone-3,141.59.jar -role hub -maxSession 18 -port 4444
-role hub :表示启动的是hub主节点
-port:设置端口号,hub的默认端口是4444
-maxSession:为最大回话请求
启动 Node:Node 是实际执行测试的机器,连接到 Hub,并提供不同的浏览器和操作系统环境。
启动命令:
java -jar selenium-server-standalone-3.141.59.jar -role node -port ssss -hub http://192.168.137.1:4444/grid/registermaxsession 5 -browser brouserhame=firefox,seleniumProtocol=Heboriver,maxinstances=5,platform:WINDONs,version=45.0.2
- role node:表示启动的是node节点
- port 5555:指定node节点端口
- hub http://192.168.137.1:4444/grid/register:表示hub机注册地址
- maxSession5:node节点最大会话请求
- browser browserName=firefox,seleniumProtocol=WebDriver,maxinstances=5,platfom=WiNDOWS,version=45.0.2 :设置浏览器的参数;obrowserName表示浏览器名字,如chrome、firefox、ieo;maxInstances表示最大实例,可以理解为最多可运行的浏览器数,不能大于前面maxSession的值,否则可能会出错;platform表示操作系统,如WINDOWS、LINUX、MAC;oversion表示浏览器版本
测试请求:测试脚本通过 Hub 提交测试请求,指定所需的浏览器和操作系统等要求。
请求分配:Hub 接收测试请求,根据请求的能力和配置,将测试分配给合适的 Node。
执行测试:Node 执行测试脚本,并将结果返回给 Hub。
报告结果:Hub 将测试结果汇总,并将其反馈给测试脚本
1.3 多线程使用步骤
“
需求:
1.使用百度搜索Python案例
2.分别在chrome和firefox中进行
”
#1.导包
from selenium import webdriver
form time import sleep
import threading
#2.封装 百度
def get_baidu(driver):
#打开url
driver.get("http://www.baidu.com")
#输入 Python
driver.find_element_by_id("kw").send_keys("python")
#点击搜索按钮
driver.find_element_by_id("su").click()
sleep(3)
driver.quit()
#3.封装 driver
def get_driver(browser):
#定义空变量
cap=None
#判断浏览器类型
if browser == “chrome”:
cap=webdriver.DesiredCapabilities.CHROME.copy()
elif browser == “firefox”:
cap=webdriver.DesiredCapabilities.FIREFOX.copy()
#修改默认平台名称
cap['platform']="MAC"
#返回driver
return webdriver.Remote("http://127.0.0.1:4444/wd/hub',cap)
#4.遍历多线程
#定义浏览器列表
browserName=['chrome','firefox']
# 遍历浏览器列表
for browser in browserName:
# 获取驱动程序
driver = get_driver(browser)
#实例化线程及启动
threading.Thread(target=get_baidu,args=(driver,)).start()
2.编写自动化测试用例的原则
- 自动化测试用例一般只实现核心业务流程或者重复执行率较高的功能。
- 自动化测试用例的选择一般以“正向"逻辑的验证为主。
- 不是所有手工用例都可以使用自动化测试来执行。
- 尽量减少多个用例脚本之间的依赖。
- 自动化测试用例执行完毕之后,一般需要回归原点。
项目目录结构搭建
- base:所有 poge 页面基类,page 页面公共方法目录
- page:页面对象目录
- scripts:测试脚本
- image:失败图片存储目录
- report:测试报告存储目录
- data:测试数据存储目录
- log:脚本运行日志存储目录
- tools:工具类存储目录