前言:
此刻小伙伴们对“web界面测试”大概比较注意,姐妹们都需要知道一些“web界面测试”的相关文章。那么小编也在网摘上汇集了一些关于“web界面测试””的相关知识,希望朋友们能喜欢,姐妹们快快来了解一下吧!免费领取:测试资料+性能测试+接口测试+自动化测试+测试开发+测试用例+简历模板+测试文档 - 公众号 - 测试人社区
本文为霍格沃兹测试开发学社学员学习笔记分享
原文链接:web自动化测试策略 - 学习笔记 - 测试人社区
一、元素定位策略
在实际自动化测试过程中常常遇到以下几个问题
不知道该用哪种方式进行元素定位?元素有时候无法定位如何解决?1.1、 定位方式定位方式通用场景通用 Web 定位方式js 定位(CSS)特殊场景弹框-alert()日期控件文件上传其他场景…1.2、选择定位器通用原则与研发约定的属性优先(class属性: [name='locate'])身份属性 id,name(web 定位)复杂场景使用组合定位:xpath,css属性动态变化(id,text)重复元素属性(id,text,class)父子定位(子定位父)js定位1.3、相关章节高级定位-xpath高级定位-css执行JavaScript脚本面试题-定位不到元素1.4、特殊场景(一)Web 弹框定位场景web 页面 alert 弹框解决:web 需要使用 driver.switch_to().alert() 处理(二)下拉框/日期控件定位场景:<input>标签组合的下拉框无法定位<input>标签组合的日期控件无法定位解决:面对这些元素,我们可以引入 JS 注入技术来解决问题。(三)文件上传定位场景:input 标签文件上传解决:input 标签直接使用 send_keys()方法二、显示等待与隐式等待
为什么要添加等待
避免页面未渲染完成后操作,导致的报错2.1、强制(直接)等待解决方案:在报错的元素操作之前添加等待原理:强制等待,线程休眠一定时间演练环境:vip.ceshiren.com/time.sleep(3)
强制等待的缺点
如果设置的等待时间过长,可能会影响用例的执行效率;如果设置的等待时间过短,页面可能依然加载不全,从而导致定位失败。强制等待一般只用于代码调试场景解决方案:针对于寻找元素的这个动作,使用隐式等待添加配置。2.1、隐式等待原理:设置一个等待时间,轮询查找(默认0.5秒)元素是否出现,如果没出现就抛出异常特点:隐式等待是全局生效,在其之后的所有的find_element动作都会先执行隐式等待。所以在代码一开始的时候就要添加隐式等待配置。优点:隐式等待可以解决元素查找的问题缺点:隐式等待不能解决元素交互问题,如点击,输入等。
def click_none(): driver = webdriver.Chrome() driver.maximize_window() driver.implicitly_wait(3) driver.get(";) driver.find_element(By.ID, "success_btn").click() # 点击未触发效果 time.sleep(5) driver.quit()2.3、显式等待
隐式等待无法解决的问题
元素可以找到,使用点击等操作,出现报错原因:页面元素加载是异步加载过程,通常html会先加载完成,js、css其后元素存在与否是由HTML决定,元素的交互是由css或者js决定隐式等待只关注元素能不能找到,不关注元素能否点击或者进行其他的交互解决方案:使用显式等待
WebDriverWait(driver对象,最长等待时间).until()
2.4、总结
类型
使用方式
原理
适用场景
直接等待
time.sleep(等待时间))
强制线程等待
调试代码,临时性添加
隐式等待
driver.implicitly_wait(等待时间)
在时间范围内,轮询查找元素
解决找不到元素问题,无法解决交互问题
显式等待
WebDriverWait(driver实例, 最长等待时间, 轮询时间).until(结束条件)
设定特定的等待条件,轮询操作
解决特定条件下的等待问题,比如点击等交互性行为
三、自动化实战3.1、产品分析产品:测试人论坛功能:搜索3.2、测试用例分析
用例标题
前提条件
用例步骤
预期结果
实际结果
测试人搜索功能
进入测试人论坛首页
1. 点击搜索按钮2. 输入搜索关键词3. 点击搜索按
1. 搜索成功2. 搜索结果列表包含关键字
自动化测试也是功能测试的一部分,我们会挑选一些核心的功能来做自动化测试
自动化测试无需编写测试用例,直接使用已有的功能测试用例就可以了
3.3、编写脚本前置:setup 初始化浏览器驱动后置:teardown 关闭浏览器
class UIBase: driver = webdriver.Chrome() def setup_class(self): self.driver.maximize_window() self.driver.implicitly_wait(5) def teardown_class(self): self.driver.quit()
# 用例标题=文件名+类名+方法名 class TestCeshiren(UIBase): def setup_method(self): # 前提条件:进入测试论坛首页 self.driver.get(";) def test_search(self): """测试搜索功能""" # 测试步骤 # 1、搜索框中输入 el01 = self.driver.find_element(By.CSS_SELECTOR, "[placeholder='搜索'") el01.send_keys("appium") # 2、点击搜索按钮 el02 = self.driver.find_element(By.CSS_SELECTOR, ".btn-primary.search-cta.btn.btn-icon-text") el02.click() # time.sleep(5) # 3、断言 搜索结果中有appium关键字 el03 = self.driver.find_element(By.CSS_SELECTOR, ".search-highlight") # print(el03.text) assert "appium" in el03.text.lower()
标签: #web界面测试