appium包含文本定位的5种方法

news/2025/11/13 21:26:40/文章来源:https://www.cnblogs.com/zhangdingqu/p/19219598
# appium定位,以text包含部分文字定位示例# 方法1: 使用XPath的contains函数进行text部分匹配
from appium.webdriver.common.appiumby import AppiumBydef locate_element_by_partial_text(driver, partial_text):"""通过text包含部分文字定位元素的多种方法"""# 方法1: XPath - contains函数匹配text属性# 最常用的方法,适用于大多数情况element1 = driver.find_element(AppiumBy.XPATH,f"//*[contains(@text, '{partial_text}')]")print(f"方法1 - XPath contains: 找到元素 {element1.text}")# 方法2: XPath - contains函数匹配content-desc属性# 有时text内容可能在content-desc中try:element2 = driver.find_element(AppiumBy.XPATH,f"//*[contains(@content-desc, '{partial_text}')]")print(f"方法2 - XPath contains (content-desc): 找到元素")except Exception as e:print(f"方法2 - 未找到匹配元素: {str(e)}")# 方法3: 使用UiAutomator2的textContains方法# 更高效,Android专用try:element3 = driver.find_element(AppiumBy.ANDROID_UIAUTOMATOR,f'new UiSelector().textContains("{partial_text}")')print(f"方法3 - UiAutomator textContains: 找到元素 {element3.text}")except Exception as e:print(f"方法3 - 未找到匹配元素: {str(e)}")# 方法4: 先获取所有可能的元素,再过滤# 适用于复杂场景try:all_elements = driver.find_elements(AppiumBy.CLASS_NAME, 'android.widget.TextView')filtered_elements = [e for e in all_elements if partial_text in e.text]if filtered_elements:print(f"方法4 - 过滤匹配: 找到 {len(filtered_elements)} 个匹配元素")for i, elem in enumerate(filtered_elements):print(f"  第{i+1}个元素: {elem.text}")except Exception as e:print(f"方法4 - 过滤出错: {str(e)}")# 方法5: 匹配多个属性# 更精确的定位try:element5 = driver.find_element(AppiumBy.XPATH,f"//android.widget.TextView[contains(@text, '{partial_text}') and @clickable='true']")print(f"方法5 - 多属性匹配: 找到可点击元素 {element5.text}")except Exception as e:print(f"方法5 - 未找到匹配元素: {str(e)}")# 返回第一个找到的元素return element1# 使用示例(需要在实际driver环境中运行)
"""
# 假设driver已经初始化
# driver = webdriver.Remote(...)  
# 
# # 查找text中包含"登录"的元素
# login_element = locate_element_by_partial_text(driver, "登录")
# login_element.click()
# 
# # 查找text中包含"确认"的按钮
# confirm_button = locate_element_by_partial_text(driver, "确认")
# confirm_button.click()
"""# 注意事项:
# 1. 当partial_text包含引号时,需要特殊处理以避免XPath语法错误
# 2. 方法3在Android上性能更好,特别是页面元素较多时
# 3. 优先使用方法1和方法3,它们是最常用且稳定的方式
# 4. 如果元素在屏幕外,可能需要先滚动页面再查找
# 5. 对于iOS,可以使用predicate string: '-ios predicate string', 'label CONTAINS[c] "部分文字"'

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/964729.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++ const总结

1、const 修饰普通变量 C/C++中常量用于记录程序中不可更改的数据,在数据类型前加const,就得到了一个不可更改的常量。常量声明:const用于定义常量const int MAX = 100;//MAX的值在程序运行期间无法被修改,所以必须…

11.13 程序员的修炼之道:从小工到专家 第五章 弯曲或折断 - GENGAR

这五节内容围绕软件设计的解耦、灵活性、协作效率展开,提出了多项关键原则与模型。解耦是贯穿始终的核心,得墨忒耳法则明确了对象方法调用的边界,仅允许调用自身、参数、创建对象及直接持有组件的方法,减少模块间依…

20251112周三日记

20251112周三日记今日: 1.早上九点多起床,下去登一下ow卡死进不去了。上课时接到家里消息。准备交简历、连梯子看3b1b教程。 2.下午看完了deepia老师的diffusion介绍,下载了本书,学了会儿,太他妈复杂了全是数学推…

力扣 第 475 场周赛(A~C)

力扣 第 475 场周赛(A~C)$(".postTitle2").removeClass("postTitle2").addClass("singleposttitle");A:3740. 三个相等元素之间的最小距离 I见B。 B:3741. 三个相等元素之间的最小距离…

学习笔记:AC 自动机

最智慧的,不是避免所有失败,而是在失配时借力转向,让每一次跌倒都成为新模式的起点。—— 题记其实我两周前就学了 AC 自动机,本来不应该现在才写这个笔记的。但是当时对 AC 自动机的理解比较模糊,直到刚才听了风…

详细介绍:Web爬虫指南

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

搜维尔科技:具身人工智能中的 MANUS:从人类运动到机器人灵巧性

灵巧的机器人手正成为具身人工智能的基石。动作捕捉、仿真、强化学习和自监督基础模型的最新进展,使得机器人能够执行越来越接近人类的操作技能。 复制人手的精确性、适应性和触觉控制能力(人手由27块骨头、数十块肌…

重组蛋白技术基础概述

重组蛋白的基本概念 重组蛋白是通过基因重组技术在宿主系统中表达的外源蛋白。该技术将目标基因导入表达载体,转化至宿主细胞,利用细胞自身的转录翻译机制合成目标蛋白。与传统组织提取相比,重组技术可获得更高纯度…

升鲜宝分拣系统 具体实现(一)

升鲜宝分拣系统 具体实现(一)按商品分拣1.商品汇总(分页)2.客户汇总(分页)3.分拣一条商品4.撤消一条已分拣商品5.缺货一条订单商品记录6.一条订单商品记录的操作记录7.获取分拣的商品分类8.获取分拣的线路列表9.分…

2025-11-13

1.Problem - 1881E - Codeforces(1500)(dp) dp好题 #include <bits/stdc++.h> using namespace std; #define LL long long const LL mod = 998244353; const int N=2e5+10; int a[N], inf = 1e9, dp[N];voi…

字典树小记

普通字典树 没什么好讲的 0-1 Trie 非常有用,经常用于异或相关的题目 求一个集合中两两异或的最大值 枚举集合中的一个数 \(x\),按位贪心,如果这一位有一个与 \(x\) 不同的,那么字典树上走这一边,否则走 \(x\) 的…

搜维尔科技:Xsens Link为精准而生,为创意而设计,为动作捕捉性能树立了新的标准

行业领先的动作捕捉服 新一代Xsens Link专为追求精准、可靠和行动自由的专业人士打造,这款全新的eSuit配备17个一键式传感器,内置线缆,安装时间缩短50%。Link经过重新设计,可提供最精准、最稳定的运动数据,树立了…

一个好题2

一个好题的题解题目传送门 欢迎光临我的博客 遇到这种题,我们首先有一个套路:拆贡献。我们把答案拆到每条边上,这样的话只需要加上 每条边在所有合法方案里出现的次数之和 \(\times\) 这条边的长度即可。 那一条边会…

实用指南:百分点科技发布中国首个AI原生GEO产品Generforce,助力品牌决胜AI搜索新时代

实用指南:百分点科技发布中国首个AI原生GEO产品Generforce,助力品牌决胜AI搜索新时代pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important;…

考前复习

Floyd 字符串哈希 单调栈/单调队列 三分 ST 表 最小生成树 最近公共祖先(LCA) dij SPFA 缩点 tarjan(割点,割边,点双,边双,判环 ) 线段树,树状数组 欧拉路径 矩阵快速幂 全源最短路(Johnson) 两个排列的最长公…

2025 年 11 月粮库空调厂家最新推荐,聚焦资质、案例、售后的实力品牌深度解析!

在粮食储备行业,粮库空调的性能直接关系到粮食品质与存储安全,随着全球粮食储备技术升级,市场对高精度、高稳定性粮库空调的需求持续增长。本次 2025 年 11 月粮库空调厂家推荐,参考国际制冷协会(IIR)、国际粮食…

题解:P3813 [FJOI2017] 矩阵填数

更差的阅读体验注意到,一个矩阵最大值为 \(x\) 的充要条件是:矩阵中的每一个元素 \(\le x\)。 矩阵中存在至少一个 \(x\)。仅考虑第一个条件是好做的。具体地,每一个格子存在一个取值的上限 \(mx_{i, j}\),也就是所…

第三章博文

1.关于数学三角形这道题目,从图形来看,它拥有自上而下的的逻辑结构,根据观察,可以列出以下的递归方程式: 假设我们使用一个二维数组c的下半三角来存放整个数学三角形,用i来控制行(从1开始),用j来控制列,那么就…

Spring BeanPostProcessor接口

[[Spring IOC 源码学习总笔记]] BeanPostProcessor BeanPostProcessor是 Spring 框架提供的一个扩展点接口,它允许开发者在 Spring 容器完成 Bean 的实例化、依赖注入之后,在初始化阶段的前后“拦截”并自定义 Bean …

25.11.13随笔联考总结

考试 正常通读题面,发现 T1 是构造,T2 很神秘没啥想法,T3 是一个比较明显的 dp,T4 是 ds。思考了一下决定还是顺序开。做 T1,有好几次都给我一种做出来的错觉,但是到最后一直有几个位置不合法,怎么微调都不能构…