web自动化测试方案
概要
- 对于web端自动化测试方案中目前使用范围比较广的有:puppeteer,pyppeteer,selenium。puppeteer是谷歌开发的浏览器测试框架,使用NodeJs开发;pyppeteer是基于puppeteer开发的python版本,但是这个版本的Bug修改以及更新比较慢。selenium是目前使用比较广相对于比较稳定的web测试框架。
- 对于我们目前的web测试来说,pyppeteer和selenium都是足够用的,但是目前还是比较倾向于selenium。主要是selenium还是使用范围稍微广点,网上资料多谢。
使用(selenium, Google浏览器测试)
python脚本代码
- 由于网页的渲染相对于程序执行来说还是比较慢的,连续点击或者需要等待页面更新的还是需要增加一定的延时(测试过程中500毫秒的延时基本上可以解决)。
- 参考文档
https://blog.youkuaiyun.com/weixin_44318830/article/details/103339273
- 下载驱动
打开浏览器,在地址栏输入chrome://version/便可以查看到谷歌当前的版本号
http://chromedriver.storage.googleapis.com/index.html
下载和自己版本最近的版本
- 安装驱动
将chromedriver.exe放到python的可执行目录下
- 启动
import time
import sys
from selenium import webdriver
# 这个包可以模拟键盘上所有的按键
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.chrome.options import Options
# 配置默认模式
options = Options()
# 设置chrome浏览器无界面模式
# 无界面模式也可以截图
options.add_argument('--headless')
# 禁用gpu优化
options.add_argument('--disable-gpu')
drive = webdriver.Chrome(options=options)
# 设置最大化
# (1)
drive.maximize_window()
# (2)
width = drive.execute_script('return document.body.parentNode.scrollWidth')
height = drive.execute_script('return document.body.parentNode.scrollHeight')
drive.set_window_size(width, height)
# 等待页面启动浏览器
driver.implicitly_wait(10) # seconds
try:
# 访问服务
driver.get("http://localhost:8080/#/")
# 开始测试
# 说明:
# 我主要使用的是 driver.find_element_by_css_selector("")函数来查找相关的标签
# (1) 输入框
element = driver.find_element_by_css_selector(".a378 .el-input__inner") #通过选择器查找相关的类 嵌套类使用 (空格隔开)
element.clear() #清除输入框原有的数据(有些输入框可能有默认数据)
element.send_keys("value") #给输入框设置数据
# (2) 按钮(需要点击)
driver.find_element_by_css_selector(".ab7b").click() #通过选择器查找相关的类 嵌套类使用 (空格隔开)
# (3) 下拉列表(连续执行下拉列表需要增加延时)
#通过选择器查找相关的类 嵌套类使用 (空格隔开) 展开下拉列表
driver.find_element_by_css_selector(".abab").click()
#列举下拉列表项
element_list = driver.find_element_by_css_selector("div[x-placement] .el-select-dropdown__item span")
# (4) 时间选择器
driver.find_element_by_css_selector(".aee1").click()
# 增加延时 需要时间显示日历页面
time.sleep(0.5)
# 点击上一个月的按钮
driver.find_element_by_css_selector("div[x-placement] .is-left .el-icon-arrow-left").click()
# 点击上一年的按钮
driver.find_element_by_css_selector("div[x-placement] .is-left .el-icon-d-arrow-left").click()
# 点击下一个月的按钮
driver.find_element_by_css_selector("div[x-placement] .is-right .el-icon-arrow-right").cliek()
# 点击下一年的按钮
driver.find_element_by_css_selector("div[x-placement] .is-right .el-icon-d-arrow-right").click()
time.sleep(0.1)
# 选择1号(第一个 available)
# 开始日期
driver.find_element_by_css_selector("div[x-placement] .is-left .available span").click()
# 结束日期
driver.find_element_by_css_selector("div[x-placement] .is-right .available span").click()
# 截图
driver.save_screenshot('./login_pre.png')
finally:
# 关闭浏览器
driver.close()
视频录制
- 通过selenium IDE进行脚本录制
- 参考文档
https://zhuanlan.zhihu.com/p/137206279
- 安装selenium
Google网上应用商店 查找selenium ide
- 启动selenium ide
- 进入selenium ide
点击 “Record a new test in a new project”
- 添加项目名
点击OK
- 添加需要录制的网址,开始录制
点击START RECORDING
- 停止录制