首页 > 其他分享 >做ui自动化测试需要对页面所有元素进行可见作断言吗?还是说只需要断言一个元素存在

做ui自动化测试需要对页面所有元素进行可见作断言吗?还是说只需要断言一个元素存在

时间:2024-07-22 10:54:35浏览次数:15  
标签:断言 元素 driver ui 关键 测试 页面

嗨,我是兰若姐姐,今天和大家讨论下,页面元素的断言,应该断言一个还是多个,还是所有?
其实,在UI自动化测试中,是否需要对页面所有元素进行可见性断言,还是只需要断言一个关键元素存在,取决于测试的具体目标和上下文。以下是一些常见的实践和建议:

1. 关键元素断言

在大多数情况下,断言一个或几个关键元素的存在或可见性即可证明页面正常加载和跳转。这些关键元素通常是页面上最重要的部分,表明页面已经成功渲染。

例子:
  • 登录页面:检查登录按钮或用户名输入框是否存在。
  • 主页:检查导航栏或主要内容区域是否存在。
  • 特定页面:检查页面标题或特定的唯一元素是否存在。

2. 多个关键元素断言

为了增加测试的可靠性,可以检查多个关键元素。这可以确保页面不仅加载了,而且加载的是你期望的页面,而不是出现部分加载或加载了错误的内容。

例子:
  • 登录页面:检查用户名输入框、密码输入框和登录按钮都存在。
  • 购物车页面:检查商品列表、结账按钮和总价标签是否存在。

3. 全部元素断言

在某些特定情况下,可能需要对页面上更多的元素进行可见性断言,例如:

  • 复杂页面:页面内容较多且重要元素分散。
  • 关键业务流程:需要确保整个页面的完整性和所有功能都可用。
  • 高风险场景:系统中的某些页面或功能是关键业务流程的一部分,不能有任何疏漏。

4. 实践建议

  • 平衡测试覆盖和执行时间:全面检查所有元素可能会增加测试的执行时间。找到覆盖率和执行效率之间的平衡点很重要。
  • 使用页面对象模式:在自动化测试中使用页面对象模式,可以更容易地管理和断言页面元素。
  • 关注关键路径:确保关键用户路径和功能得到充分测试,这样可以提高测试的有效性和可靠性。
  • 持续集成和回归测试:在持续集成和回归测试中,确保核心功能和关键路径得到充分测试,以便快速发现并修复问题。

示例代码(使用Selenium和Python)

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

driver = webdriver.Chrome()

# 打开目标页面
driver.get('http://example.com/login')

# 等待关键元素可见
WebDriverWait(driver, 10).until(EC.visibility_of_element_located((By.ID, 'username')))
WebDriverWait(driver, 10).until(EC.visibility_of_element_located((By.ID, 'password')))
WebDriverWait(driver, 10).until(EC.visibility_of_element_located((By.ID, 'loginButton')))

# 断言关键元素存在
assert driver.find_element(By.ID, 'username').is_displayed()
assert driver.find_element(By.ID, 'password').is_displayed()
assert driver.find_element(By.ID, 'loginButton').is_displayed()

driver.quit()

结论

大多数情况下,断言页面上的关键元素的存在和可见性已经足够,但在某些情况下可能需要更全面的检查。根据你的具体需求和测试场景,选择适当的策略来平衡测试覆盖率和执行效率。

标签:断言,元素,driver,ui,关键,测试,页面
From: https://blog.csdn.net/weixin_45754647/article/details/140597196

相关文章

  • 如何让 pyautogui 检测特定颜色?
    尝试让pyautogui检测某个像素的颜色,但它一直说颜色存在,即使它不存在。frompyautoguiimport*importpyautoguiimporttimeimportkeyboardimportrandomimportwin32api,win32conimportwin32com.clientascomcltwhile1:try:pyautogui.pixel(1400,......
  • LeetCode 3070. 元素和小于等于 k 的子矩阵的数目
    3070.元素和小于等于k的子矩阵的数目给你一个下标从 0 开始的整数矩阵 grid 和一个整数 k。返回包含 grid 左上角元素、元素和小于或等于 k 的 子矩阵 的数目。示例1:输入:grid=[[7,6,3],[6,6,1]],k=18输出:4解释:如上图所示,只有4个子矩阵满足:包含g......
  • 如何找到并点击特定颜色的pyautogui?
    我正在尝试创建一个脚本,一旦找到颜色就会单击它。我不知道怎么办。我所知道的是,代码将在“try”函数之后立即执行。frompyautoguiimport*importpyautoguiimporttimeimportkeyboardimportrandomimportwin32api,win32conimportwin32com.clientascomcltimport......
  • 一个简单的问题(python、串行通信和arduinos)
    只是一个关于小脚本的快速问题,由于某种原因无法工作我运行了这个脚本:importserialimporttimeimportturtledefserialreading():serialPort=serial.Serial(port="COM5",baudrate=9600,bytesize=8,timeout=2,stopbits=serial.STOPBITS_ONE......
  • 解压列表/元组中的前两个元素
    Python有没有办法这样做:a,b,=1,3,4,5然后:>>>a1>>>b3上面的代码不起作用,因为它会抛出ValueError:toomanyvaluestounpack当然可以!虽然不能直接像你写的那样解包,但Python提供了几种优雅的方式来获取列表或元组的前两个元素。......
  • Arduino调整小车速度
    #include<Servo.h>//引用库//因为很多子函数要用这个变量,所以把servo定义称全局变量,作用域是整个代码文件ServomyServo;//全速:digitalWrite(2,3左轮;4,5右轮)//调速:analogWrite(pin,0~255)--2,3左轮;5,//analogWrite只支持3,5,6,9,10,11引脚//所以对4,5的物理接线对换一下//前进v......
  • 鸿蒙UI系统组件06——进度条(Progress)
    如果你也对鸿蒙开发感兴趣,加入“Harmony自习室”吧!扫描下面名片,关注公众号。1、概述Progress是进度条显示组件,显示内容通常为某次目标操作的当前进度。2、创建进度条Progress通过调用接口来创建,接口调用形式如下:Progress(options:{value:number,total?:number,type?......
  • 解决Element UI 表格组件懒加载数据刷新问题
    一、问题描述elementui的table组件设置成懒加载时,遇到数据表格需要更新、删除等操作,子节点不会自动更新。二、解决思路刷新数据,就是重新调用load(),通过map记录已展开的节点,需要刷新数据时,取出对应treeNode,调用load()进行数据刷新。三、代码实现(VUE)exportdefault{data(......
  • IMGUI快速入门
    资源大全官方资源源码+例子:ocornut/imgui:DearImGui:Bloat-freeGraphicalUserinterfaceforC++withminimaldependencies(github.com)python绑定:pyimgui/pyimgui:Cython-basedPythonbindingsfordearimgui(github.com)调试IMGUI自身:调试工具·ocornut/imgui......
  • 自动化测试的艺术:Xcode中GUI测试的全面指南
    自动化测试的艺术:Xcode中GUI测试的全面指南在软件开发过程中,图形用户界面(GUI)测试是确保应用质量和用户体验的关键环节。Xcode,作为苹果的官方集成开发环境(IDE),提供了一套强大的工具来支持iOS和macOS应用的GUI自动化测试。本文将详细介绍Xcode如何支持GUI自动化测试,并提供实际......