APP自动化测试元素定位及隐式等待
元素定位是UI自动化测试中最关键的一步,假如在自动化测试中没有定位到页面中素,也就无法完成对页面的测试操作。那么,我们在自动化测试中如何定位到是要部面元素呢?
下面聊一聊用 Appium 定位元素的方式。
定位页面元素有很多种方式,例如,可以通过ID、accessibility_id、XPth等方式进行页面元素的定位,也可以使用 Android 和i0S 提供的定位方式实现页面元素的定位。
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):使用 UiAutomator提供的API,尤其是 UiSelector类来定位元素,在 Appium中,会将Java代码作为字符串发送到服务器,服务器在应用程序的环境中执行这段代码,并返回一个或多个元素。
Android View Tag (Espressoonly):使用 view tag 定位元素。
Android Data Matcher (Espressoonly):使用Espresso数据匹配器定位元素。
隐式等待是一种全局等待方式。设置了隐式等待时长,实际上是对页面中的所有查找元素的方法设置了加载时长,如果查找时间超出了设置时间则抛出异常。
假如在测试脚本中设置了隐式等待时长为10秒,测试脚本会在10秒内不停地执行查找页面元素操作,如果在第2秒就找到所需要的元素,就停止查找且继续执行后面的测试代码,如果查找时间超出了设置时间,则测试代码抛出异常。
一旦在测试代码中设置了隐式等待,则隐式等待就会存在整个WebDriver对象实例的生命周期中。例如,元素的测试代码每次调用find_element或者find_elements方法的时候,就会自动触发隐式等待。
相关文章:
APP自动化测试元素定位及隐式等待
元素定位是UI自动化测试中最关键的一步,假如在自动化测试中没有定位到页面中素,也就无法完成对页面的测试操作。那么,我们在自动化测试中如何定位到是要部面元素呢? 下面聊一聊用 Appium 定位元素的方式。 定位页面元素有很多种…...
Element plus 的 upload 组件实现自定义上传
Element Plus 是一个基于 Vue 3 的 UI 组件库,提供了许多常用的 UI 组件。其中,Upload 组件用于文件上传功能。如果你想实现自定义上传逻辑,可以通过 before-upload 和 http-request 属性来实现。 以下是一个简单的示例,展示如何…...
力扣-数据结构-10【算法学习day.81】
前言 ###我做这类文章一个重要的目的还是给正在学习的大家提供方向(例如想要掌握基础用法,该刷哪些题?建议灵神的题单和代码随想录)和记录自己的学习过程,我的解析也不会做的非常详细,只会提供思路和一些关…...
WPF的一些控件的触发事件记录
<c1:C1ComboBox Width"230" ItemsSource"{Binding ReplaceWayList}" Style"{StaticResource ListSearch-C1ComboBox}" SelectedValueChanged"C1ComboBox_SelectedValueChanged", 下拉框事件,值改变事件&a…...
C# 设计模式(创建型模式):建造者模式
C# 设计模式(创建型模式):建造者模式 引言 在软件开发中,创建型设计模式主要关注对象的创建方式,其中建造者模式(Builder Pattern)是非常重要的一种。建造者模式通过一步一步构建一个复杂对象…...
关于模板函数的void返回值的判断:std::is_void与模板特化
int返回值的函数参数测试 #include <iostream> #include <functional>int return_int_func(){std::cout << __func__ << std::endl << std::flush;return 10086; }template<class U> auto CallDeviceMethodShort(std::function<U()&g…...
重现ORA-01555 细说Oracle Undo 数据管理
1. 概述 1.1. Undo 数据应用 undo数据是: 原始的、修改之前的数据副本 是针对更改数据的每个事务处理所捕获的 至少保留到事务处理结束 用于支持: 回退操作 读取一致性查询 闪回查询、闪回事务处理和闪回表 从失败的事务处理中进行恢复 1.2. 事…...
通过blob请求后端导出文件
后端controller PostMapping("/exportPlanProject2")public void exportActive(RequestBody IfPlanListDTO plan, HttpServletResponse httpServletResponse) throws IOException {}后端service public void exportExcel2(HttpServletResponse response) throws IOEx…...
养老院小程序怎么搭建?让老年人老有所养,老有所依!
随着社会老龄化的加剧,养老服务成为一个越来越重要的话题。在这个互联网的时代,养老院也开始拥抱技术,借助小程序的便捷性来改善老年人的居住和生活体验。那么,如何搭建一个适合老年人的养老院小程序呢?本文将从实际操作的角度出…...
【2024美国数学建模AB题原文翻译】
2024 MCM 问题A:资源可用性与性别比例 虽然一些动物物种超出了通常的雄性或雌性性别范畴,但大多数物种要么是雄性要么是雌性。尽管许多物种在出生时展现出1:1的性别比例,其他物种则偏离了这个性别比例,这被称为适应性性别比例变化…...
判断旗帜是否符合ISO新标准
背景介绍 在全球化的背景下,不同国家的旗帜设计需要满足某些国际标准以便于统一化和规范化。ISO(国际标准化组织)提出了一项新规定,要求国家旗帜在设计时遵循一些规则,特别是棋盘状设计中的颜色分布规则。比如&#x…...
海量数据存储实现方案设计1-mycat版
目的 这里使用mycat为例子说明方案设计思路(仅个人学习、思考笔记)。主要尝试解决海量数据存储、动态不停机扩容问题,不再受限于单库、单表、单机等。 mycat简述 mycat 主要以中间件代理的方式,不侵入工程代码来实现分库分表&a…...
Elasticsearch检索之三:官方推荐方案search_after检索实现(golang)
Elasticsearch8.17.0在mac上的安装 Kibana8.17.0在mac上的安装 Elasticsearch检索方案之一:使用fromsize实现分页 快速掌握Elasticsearch检索之二:滚动查询(scrool)获取全量数据(golang) 1、search_after检索 在前面的文章介绍了fromsize的普通分页…...
hot100_238. 除自身以外数组的乘积
给你一个整数数组 nums,返回 数组 answer ,其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 不要使用除法,且在 O(n) 时间复杂度…...
软件测试基础详解
🍅 点击文末小卡片,免费获取软件测试全套资料,资料在手,涨薪更快 “尽早的介入测试,遇到问题的解决成本就越低” 随着软件测试技术的发展,测试工作由原来单一的寻找缺陷逐渐发展成为预防缺陷,…...
MySQL 备份方案设计之准备事项
MySQL 备份方案设计之准备事项 文章目录 MySQL 备份方案设计之准备事项1.选择合适的备份工具2.其他需要考虑的因素推荐资料 1.选择合适的备份工具 工欲善其事,必先利其器。 目前市面上的 MySQL 备份工具也有很多,整理如下(仅供参考ÿ…...
《计算机网络A》单选题-复习题库解析-最终
目录 151、信道容量计算公式“CW*log2(1S/N)”中,“S/N”表示( ) 152、下面哪一种编码方式不包含同步时钟信息( ) 153、子网划分的根本目的是( ) 154、在传统以太…...
向 SwiftUI 视图注入 managedObjectContext 环境变量导致 Xcode 预览(Preview)崩溃的解决
问题现象 从 SwiftUI 诞生到现在,我们这些秃头码农们早已都习惯了在 Xcode 预览中调试 App 界面了。不过,对于某些场景下向 SwiftUI 视图传递 managedObjectContext 环境变量(environment)总是会导致 Xcode 预览崩溃,这是怎么回事呢? 如上图所示,甚至我们将一个常驻内存…...
Ruby 数据类型
Ruby 数据类型 Ruby,作为一种动态、开放源代码的编程语言,以其简洁明了的语法和强大的功能而闻名。在Ruby中,数据类型是编程的核心组成部分,它们决定了变量可以存储的信息种类以及可以对这些信息执行的操作。Ruby是一种类型安全的…...
复合机器人正以其高效、精准、灵活的特点,逐渐在汽车装配线上崭露头角
随着全球汽车制造业的快速发展,汽车装配线已成为衡量企业生产效率和技术水平的重要标准。传统的装配方式往往依赖于大量的人工操作,这不仅效率低下,还面临着质量不稳定、安全隐患等问题。然而,随着智能科技的飞速进步,…...
浅谈 React Hooks
React Hooks 是 React 16.8 引入的一组 API,用于在函数组件中使用 state 和其他 React 特性(例如生命周期方法、context 等)。Hooks 通过简洁的函数接口,解决了状态与 UI 的高度解耦,通过函数式编程范式实现更灵活 Rea…...
【第二十一章 SDIO接口(SDIO)】
第二十一章 SDIO接口 目录 第二十一章 SDIO接口(SDIO) 1 SDIO 主要功能 2 SDIO 总线拓扑 3 SDIO 功能描述 3.1 SDIO 适配器 3.2 SDIOAHB 接口 4 卡功能描述 4.1 卡识别模式 4.2 卡复位 4.3 操作电压范围确认 4.4 卡识别过程 4.5 写数据块 4.6 读数据块 4.7 数据流…...
企业如何增强终端安全?
在数字化转型加速的今天,企业的业务运行越来越依赖于终端设备。从员工的笔记本电脑、智能手机,到工厂里的物联网设备、智能传感器,这些终端构成了企业与外部世界连接的 “神经末梢”。然而,随着远程办公的常态化和设备接入的爆炸式…...
大语言模型(LLM)中的KV缓存压缩与动态稀疏注意力机制设计
随着大语言模型(LLM)参数规模的增长,推理阶段的内存占用和计算复杂度成为核心挑战。传统注意力机制的计算复杂度随序列长度呈二次方增长,而KV缓存的内存消耗可能高达数十GB(例如Llama2-7B处理100K token时需50GB内存&a…...
iview框架主题色的应用
1.下载 less要使用3.0.0以下的版本 npm install less2.7.3 npm install less-loader4.0.52./src/config/theme.js文件 module.exports {yellow: {theme-color: #FDCE04},blue: {theme-color: #547CE7} }在sass中使用theme配置的颜色主题,无需引入,直接可…...
Vue ③-生命周期 || 脚手架
生命周期 思考:什么时候可以发送初始化渲染请求?(越早越好) 什么时候可以开始操作dom?(至少dom得渲染出来) Vue生命周期: 一个Vue实例从 创建 到 销毁 的整个过程。 生命周期四个…...
【SpringBoot自动化部署】
SpringBoot自动化部署方法 使用Jenkins进行持续集成与部署 Jenkins是最常用的自动化部署工具之一,能够实现代码拉取、构建、测试和部署的全流程自动化。 配置Jenkins任务时,需要添加Git仓库地址和凭证,设置构建触发器(如GitHub…...
【安全篇】金刚不坏之身:整合 Spring Security + JWT 实现无状态认证与授权
摘要 本文是《Spring Boot 实战派》系列的第四篇。我们将直面所有 Web 应用都无法回避的核心问题:安全。文章将详细阐述认证(Authentication) 与授权(Authorization的核心概念,对比传统 Session-Cookie 与现代 JWT(JS…...
LangChain 中的文档加载器(Loader)与文本切分器(Splitter)详解《二》
🧠 LangChain 中 TextSplitter 的使用详解:从基础到进阶(附代码) 一、前言 在处理大规模文本数据时,特别是在构建知识库或进行大模型训练与推理时,文本切分(Text Splitting) 是一个…...
C# winform教程(二)----checkbox
一、作用 提供一个用户选择或者不选的状态,这是一个可以多选的控件。 二、属性 其实功能大差不差,除了特殊的几个外,与button基本相同,所有说几个独有的 checkbox属性 名称内容含义appearance控件外观可以变成按钮形状checkali…...
