首页 > 其他分享 >自动化测试定位方式那么多,应该选哪个?

自动化测试定位方式那么多,应该选哪个?

时间:2024-04-28 10:45:57浏览次数:21  
标签:xpath 定位 text 元素 测试 自动化 id 属性

简介

定位策略是用于在自动化测试中定位移动应用界面元素的方法和策略。通过选择合适的定位策略,测试人员可以定位和操作应用程序的各种控件,如按钮、文本框、下拉列表等。常见的定位策略包括 ID 定位、XPath 定位、Class Name 定位、AccessibilityID 定位、Name 定位、XPath 模糊定位、Android UI Automator 定位以及 iOS Predicate 定位。通过灵活运用不同的定位策略,可以提高自动化测试的稳定性和可靠性。

App 定位方式

定位策略 描述
Accessibility ID 识别一个唯一的 UI 元素,对于 XCUITest 引擎,它对应的的属性名是 accessibility-id,对于 Android 系统的页面元素,对应的属性名是 content-desc
Class name 对于 iOS 系统,它的 class 属性对应的属性值会以XCUIElementType开头,对于 Android 系统,它对应的是 UIAutomator2 的 class 属性(e.g.: android.widget.TextView)
ID 原生元素的标识符,Android 系统对应的属性名为resource-id,iOS 为name
Name 元素的名称
XPath 使用 xpath 表达式查找页面所对应的 xml 的路径(不推荐,存在性能问题)
Image 通过匹配 base 64 编码的图像文件定位元素
Android UiAutomator (UiAutomator2 only) 使用 UI Automator 提供的 API, 尤其是 UiSelector 类来定位元素,在 Appium 中,会发送 Java 代码作为字符串发送到服务器,服务器在应用程序的环境中执行这段代码,并返回一个或多个元素
Android View Tag (Espresso only) 使用 view tag 定位元素
Android Data Matcher (Espresso only) 使用 Espresso 数据匹配器定位元素
IOS UIAutomation 在 iOS 应用程序自动化时,可以使用苹果的 instruments 框架查找元素

Web 定位方式

定位策略 描述
class name 通过 class 属性定位元素
css selector 通过匹配 css selector 定位元素
id 通过 id 属性匹配元素
name 通过 name 属性定位元素
link text 通过 text 标签中间的 text 文本定位元素
partial link text 通过 text 标签中间的 text 文本的部分内容定位元素
tag name 通过 tag 名称定位元素
xpath 通过 xpath 表达式匹配元素

选择定位器通用原则

  • 与研发约定的属性优先 。
    • web 推荐 class。
    • android 推荐 content-description。
    • ios 推荐 label。
  • 身份属性 id,name(web 定位)。
  • 组合定位 xpath,css。
  • 其它定位。

元素定位不到

导致 Appium 元素定位不到的原因可能包括定位信息错误、元素未加载完成、元素隐藏或不可见、元素定位策略不准确、Appium 和应用程序版本不兼容以及设备连接或设置问题。要解决这些问题,需要确保定位信息正确、等待元素加载完成、使元素可见、选择合适的定位策略、确保版本兼容性以及正确配置和设置设备。

原因 解决方案
定位不正确 在定位工具中先测试定位表达式是否正确
存在动态 ID 定位方式使用 css 或者 xpath 的相对定位
页面还没有加载完成 添加死等验证,使用显式等待或隐式等待进行优化
页面有 iframe 切换到 iframe 后定位
页面切换 window 切换到对应窗口后定位
要定位元素为隐藏元素 使用 js 操作该元素

混合定位的应用场景

  • 场景:
    • 属性动态变化(id,text)。
    • 重复元素属性(id,text,class)。
  • 解决:
    • 根据相对位置关系进行定位(css、xpath)(父级,子级,兄弟,索引)。
    • 使用 find_elements 遍历查找。
  • 参考高级定位技巧章节(xpath,css)。

使用等待机制的场景

  • 场景
    • 控件动态出现
    • 控件出现特定特征
  • 解决
    • 元素定位结合隐式等待与显式等待

特殊控件定位

Web 弹框定位

  • 场景
    • web 页面 alert 弹框
  • 解决:
    • web 需要使用 driver.switchTo().alert() 处理

App toast 提示框定位

  • 场景:
    • app Toast 提示框。
  • 解决:
    • 使用 driver.page_source 拿到页面布局结构文件,分析 Toast/弹框组件的标签内容。
    • 然后通过 id/text/class 等属性,使用 xpath 完成元素定位。
    • 结合隐式等待。

下拉框/日期控件定位

  • 场景:
    • 标签组合的下拉框无法定位。
    • 标签组合的日期控件无法定位。
  • 解决:
    • 面对这些元素,可以引入 JS 注入技术来解决问题。

文件上传定位

  • 场景:
    • input 标签文件上传。
  • 解决:
  • input 标签直接使用 send_keys() 方法。

总结

在选择定位策略时,需要考虑元素的属性、上下文以及应用的特定情况。有时候需要结合多个属性或使用相对定位,以确保定位的准确性和稳定性。此外,使用隐式等待或显式等待是确保元素加载完成的重要步骤,以避免定位超时的问题。

标签:xpath,定位,text,元素,测试,自动化,id,属性
From: https://www.cnblogs.com/hogwarts/p/18163250

相关文章

  • 大数据小白的测试成长之路
    引言22年校招入职京东后,我一直在数据中台测试部从事测试开发的工作。毕业后,写的最多的文档是测试计划和测试报告,鲜有机会就自己的成长码字进行回顾和总结。借“up技术人”栏目,也终于是在工作之余回头望,对自己这近两年时光进行一个小总结。本文是一个大数据测试小白初入职场后......
  • openGauss MOT测试总结
    MOT测试总结MOT比磁盘表性能提升2.5至4.1倍,在Arm/鲲鹏256核服务器上达到480万tpmC。测试结果清楚表明MOT在扩展和利用所有硬件资源方面的卓越能力。随着CPU槽位和服务器核数增加,性能会随之跃升。MOT在Arm/鲲鹏架构下最高可达3万tpmC/核,在x86架构下最高可达4万tpmC/核。由于持久......
  • 办公自动化系统(OA)
    一、中英文名称中文名称:办公自动化系统英文名称:OfficeAutomationSystem(简称OA系统)二、定义办公自动化系统(OA系统)是一个集成了先进计算机技术和通信技术,以自动化方式处理办公业务和信息的系统。它旨在替代传统的手动或重复性办公活动,实现信息的高效处理、共享和存储,以提高工作......
  • 职场<火焰杯>测试开发大赛开始报名啦!
    燃爆职场!火焰杯测试开发大赛再度启幕,精彩不容错过!本次大赛由火焰杯测试开发大赛组委会主办,测吧(北京)科技有限公司协办,汇聚顶尖测试开发人才,展开激烈较量。关于火焰杯<火焰杯>软件测试开发大赛为软件测试开发工程师提供一个展示自己的平台。通过对软件测试开发技能的考察,选拔出优......
  • faiss简单测试方法
    先把仓库克隆到本地,我这边还需要改cmake环境,在project上面加set(CMAKE_CUDA_COMPILER/usr/local/cuda-11.8/bin/nvcc)构建mkdirbuildcmake-Bbuild.编译,只需要编译faiss这部分就可以,(主目录下有很多测试代码,编译很慢,只编译faiss会快很多)cdbuildmake-jfaiss这时候可......
  • 实验3 :软件测试
    一、实验题目:软件测试二、实验目的1、熟悉开发环境下的自动化测试工具;1、利用自动化测试工具进行自动化单元测试。三、实验内容1、选择开发环境,IDEA或PYCHARM任选其一;2、基于所选择的开发环境实现对输入的n个整数进行排序的代码;3、对所编写代码设计测试用例;4、基于所选择......
  • 软件测试
    一、实验题目:软件测试二、实验目的熟悉开发环境下的自动化测试工具;利用自动化测试工具进行自动化单元测试。三、实验内容开发环境IDEA;基于所选择的开发环境实现对输入的n个整数进行排序的代码;对所编写代码设计测试用例;基于所选择的开发环境开展单元测试。......
  • ESP32-C3-MINI arduino测试
    1、文件——首选项2、设置开发板管理器网址3、工具——开发板——开发板管理器4、输入ESP32选择EspressifSystems最新版本、安装5、等待下载。。。6、等待安装完成7、选择开发板:ESP32C3DevModule8、新建例程9、修改LED_BUILTIN10、为IO标号数字11、连接最......
  • 定位(position)
    定位一个元素,只要position的取值不为static,认为该元素是一个定位元素定位元素会脱离文档流(相对定位除外)一个脱离了文档流的元素:文档中的元素摆放时,会忽略脱离了文档流的元素文档流中计算自动高度时,会忽略脱离了文档流的元素相对定位不会脱离文档流,在原来位置进行偏移,盒子......
  • IDELAY约束测试
    前置条件:DDR模式LRRISE:1.9-2.1FALL:1.9-2.1约束情况1:value:0IBUF-BUFG-IDELAYE2-IDDRvalue:0IBUF-IDELAYE2-IDDRmodulergmii_dphy(inputwiresys_rst_n,inputwiresys_ref_200mhz,//ethinputwire......