web自动化思维导图
2022-07-06 17:24:56 22 举报
AI智能生成
web自动化常用元素的定位,自动化测试的流程
作者其他创作
大纲/内容
简介
自动化测试意义
节省人力
提高工作效率
自动化测试的优势
回归测试
运用自动化进行测试的条件
系统稳定
项目周期长
需求变化频率不高
自动化测试的流程
需求分析
制定测试计划
决定引入自动化测试
确定自动化测试工具
QTP
录制
专家
VB语言
HP公司
QC
LoaderRunner
WebInspect
RobotFramework
Python/Java +selenium
编写自动化测试用例
维护自动化测试脚本
执行自动化测试脚本
生成测试报告
selenium工具
发展简史
2004年
selenium1.0
selenium IDE
selenium grid
selenium RC
2006年
WebDriver
2011年
selenium2.0
selenium1.0
WebDriver
2016年
selenium3.0
selenium2.0-selenium RC
2021年
selenium4.0
工作原理
脚本
运行浏览器驱动
打开浏览器
自动化环境的搭建
安装selenium
pip install selenium
下载浏览器驱动
驱动的版本与浏览器的版本要一致
如何进行自动化测试
打开浏览器
from selenium.webdriver.edge.service import Service
from selenium import webdriver
driver_path=Service(executepath="浏览器驱动地址")
driver=webdriver.Edge(service=driver_path)
driver.get("https://www.baidu.com")
如何定位页面元素
F12开发工具
插件
chropath
页面元素的标签
div
input
table
body
button
a
属性=属性值
定位单个元素
find_element()
find_element_by_id()
find_element_by_class()
find_element_by_name()
find_element_by_link_text()
find_element_by_partial_link_text()
find_element_by_tag_name()
find_element_by_xpath()
标签[@属性=值]
绝对路径
/html开始到目标元素
相对路径
//指定元素开始到目标元素
find_element_by_css_selector()
定位多个元素
find_elements()
find_elements_by_id()
定位页面元素
输入框
按钮
下拉框
from selenium.webdriver.support.select import Select
定位select的元素
Select(select元素).select_by_value(option的value值)
Select(select元素).select_by_index(索引号)
滚动条
js='var q=document.documentElement.scrollTop=1000'
driver.execute_script(js)
弹出框
切换alert
alert_w=driver.swith_to.alert
alert_w.text
获取alert窗体的内容
alert_w.accept()
点击alert的确定按钮
alert_w.dismiss()
点击alert的取消按钮
调用Alert类
from selenium.webdriver.common.alert import Alert
alert_w=Alert(driver)
alert_w.text
alert_w.accept()
alert_w.dismiss()
iframe
dirver.switch_to.frame(id/name/index)
切换到目标层
driver.switch_to.default_content
切换到默认层
浏览器窗体
js=‘window.open("https://www.baidu.com"'
driver.execute_script(js)
current_window_handle
clear()
back()
forward()
refresh()
driver.switch_to.window(句柄的索引号)
等待时间
强制等待
from time import sleep
sleep()
让线程暂停运行
隐式等待
不断地刷新页面寻找页面元素
driver.implicitly_wait(time)
time为找元素的超时时间
显式等待
等待某个条件出现为止,等待结束
格式
from selenium.webdriver.support.ui import WebDriverWait
WebDriverWait(driver.10).unitl(条件)
条件
from selenium.webdriver.support import expected_conditions as EC
EC.presence_of_element_located((By.NAME,'user-name'))
指定元素出现
alert_is_present()
出现弹出框
title_is()
浏览器的title
例子
WebDriverWait(driver.10).until(EC.presence_of_element_located((By.CLASS_NAME,'user-name')))
上传文件
windows窗体
pip instal pywin32
import win32gui
import win32con
例子
win_first=win32gui.FindWindow("#32770","打开")
win_second=win32gui.FindWindowEx(win_first,0,"ComboBoxEx32",None)
win_third=win32gui.FindWindowEx(win_second,0,"ComboBox",None)
edit=win32gui.FindWindowEx(win_third,0,'Edit',None)
button=win32gui.FindWindowEx(win_first,0,'Button','打开(&O)')
win32gui.SendMessage(edit,win32con.WM_SETTEXT,None,r"C:\Users\Administrator\Desktop\datafile.txt")
win32gui.SendMessage(win_first,win32con.WM_COMMAND,1,button)
鼠标事件
from selenium .webdriver.common.action_chains import ActionChains
键盘事件
unittest框架
继承unittest.TestCase类
python自带的框架
Testcase
test fixture
测试夹具
SetUpClass()
在用例集中只执行一次
TearDownClass()
在用例集中只执行一次
SetUp()
每个测试用例执行一次
TearDown()
每个测试用例执行一次
用例库
多个模块
用例集(以test开头)
多个测试用例组成(以test开头)
testsuite
加载测试用例
加载单个测试用例
加载多个测试用例
加载批量的测试用例
testrunner
执行测试用例
执行testsuite的用例
test report
测试报告
收藏
收藏
0 条评论
下一页
为你推荐
查看更多