【UI自动化】使用poco框架进行元素唯一定位

直接选择:

1.poco(text='买入').click()
2.poco("android.widget.ImageView").click()

相对选择、空间选择:

3.poco(text/name).parent().child()[0].click()

正则表达式:

4.list=poco(textMatches=".*ETF")

今天主要想记录下相对选择是怎么做的。

child():当前节点的子节点
children():当前节点的所有子节点
offspring():当前节点的子孙节点
parent():当前节点的父节点
sibling():当前节点的兄弟节点
child()和children()的使用区别:child()是有参数的,而children不带参数;
child(text=”ETF”)[0],不带参数的情况下,二者使用起来是没有区别的,都可以使用for 循环进行遍历,查找要寻找的元素。

注意:
使用相对选择+空间选择进行唯一定位页面上元素时,有时候会出现下标打印错误,需要【向下寻遍历】和【向上遍历】结合起来使用;并且同一次用位置信息打印时,不要滑动页面,否则打印出来的元素的位置信息会出现变化。

例如:使用相对选择(以“名称”为起点,找到“标普ETF”)找到目标元素的过程;

1.先确定要找的元素的位置; 标普ETF 【0.22,0.470625】
在这里插入图片描述
2.找到目标元素的父节点 【0.22,0.483125】
在这里插入图片描述
3.找到目标节点父节点的父节点 【0.22,0.630625】
在这里插入图片描述
4.可以看到,【相对节点】的【父节点】 和目标节点的【爷爷】节点 同为【兄弟节点】,向上找到爷爷节点就ok了
在这里插入图片描述
5.【相对节点】的【爷爷节点】 的【子孙节点】肯定能找到 我们要找的目标元素。
在这里插入图片描述
6.根据打印出来的下标 child()[3],发现打印出来的位置并不是我们要找的【元素的爷爷节点】的位置 所以3下标不对,一个个遍历,从child()[0]开始,打印到child()[11]的时候找到了。
在这里插入图片描述
7.遍历child()[11]找到【爷爷节点】
在这里插入图片描述
8.最后,一层一层继续向下遍历,直到找到目标元素;

a=poco(text=‘名称’).parent().parent().child()[11].child()[0].child()[0]
a1=poco(text=‘名称’).parent().parent().child()[11].child()[1].child()[0]
print(a,a.get_text(),a.attr(‘pos’))
print(a1,a1.get_text(),a1.attr(‘pos’))

poco(text=‘名称’).parent().parent().child(name=‘android.widget.Image’)[0].click()
poco(text=‘名称’).parent().parent().child(name=‘android.widget.Image’)[1].click()

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

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

相关文章

Docker Nginx 负载均衡搭建 - 附(Python案例,其它语言同理)

目录 一 . 概要 1. 什么是负载均衡 2. 负载均衡有哪些优势? (1)应用程序可用性 (2)应用程序可扩展性 (3)应用程序安全 (4)应用程序性能 3 . Nginx负载均衡调度策…

反转链表.

题目描述 给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。 示例 解题方法 假设链表为 1→2→3→∅,我们想要把它改成∅←1←2←3。在遍历链表时,将当前节点的 next指针改为指向前一个节点。由于节点没有引用其前一…

YOLOv5代码解读[02] models/yolov5l.yaml文件解析

文章目录 YOLOv5代码解读[02] models/yolov5l.yaml文件解析yolov5l.yaml文件检测头1--->耦合头检测头2--->解耦头检测头3--->ASFF检测头Model类解析parse_model函数 YOLOv5代码解读[02] models/yolov5l.yaml文件解析 yolov5l.yaml文件 # YOLOv5 🚀 by Ult…

力扣101 对称二叉树 Java版本

文章目录 题目描述递归解法非递归解法 题目描述 给你一个二叉树的根节点 root , 检查它是否轴对称。 示例 1: 输入:root [1,2,2,3,4,4,3] 输出:true 示例 2: 输入:root [1,2,2,null,3,null,3] 输出…

提升网络质量:UDPspeeder 实现网络优化与提速

提升网络质量:UDPspeeder 实现网络优化与提速 背景与意义原理与功能使用方法未来展望相关链接服务 在当今高度互联的网络环境下,网络质量的优化和提速对于用户体验至关重要。针对高延迟和丢包率较高的网络链路,UDPspeeder 提供了一种前向纠错…

7 数据迁移至达梦数据库

无论使用哪种解决方案很大可能性都需要进行数据迁移,即将旧的非 达梦数据库的数据迁移到达梦数据库。 我们要把 Nacos 的数据或者 SQL 语句迁移到达梦数据库。借助 DM 数据迁移工具 ,完成 Nacos 配置数据表迁移到达梦数据库。

Java里常用的集合哪些是线程安全的和不安全的

最近在做一个业务的时候,需要考虑线程的安全性,然后选用集合的时候专门去整理了一下。 线程安全的是: Hashtable,ConcurrentHashMap,Vector ,CopyOnWriteArrayList ,CopyOnWriteArraySet 线程不安全的是: H…

鸿蒙会成为安卓的终结者吗?

随着近期鸿蒙OS系统推送测试版的时间确定,关于鸿蒙系统的讨论再次升温。 作为华为自主研发的操作系统,鸿蒙给人的第一印象是具有颠覆性。 早在几年前,业内就开始流传鸿蒙可能会代替Android的传言。毕竟,Android作为开源系统&…

【数据分析之Numpy基础002】如何访问与修改ndarray对象

ndarray对象的访问与修改十分容易,跟list对象的操作一样,直接通过索引或切片操作就可以实现。 ndarray数组的下标也是从0开始,因此可以设置start,stop以及step参数即可从原数组中切割出一个新的数组。 例: 一维数组的…

Linux网络编程套接字

目录 前言 一、预备知识 1.1 源IP地址和目的IP地址 1.2 区分端口号和进程ID 1.3 TCP协议和UDP协议 1.4 网络字节序 二、socket编程接口 2.1 socket套接字的概念 2.2 socket常见API 2.3 sockaddr结构 三、关于IP和Port的绑定问题 四、编写简单的UDP服务端和客户端 前…

在VSCode中新配置一个ros项目

如何从零开始配置一个ros项目 预先准备初始化ros工程运行hello_ros进行第一个示例进行编译测试 预先准备 首先要在vscode中安装(必须安装的):ros,c,cmake,cmake tools(补全camkelist文件&#…

nginx优化配置

一 全局配置的六个模块简介 全局块:全局配置,对全局生效 events块:配置影响 Nginx 服务器与用户的网络连接 http块:配置代理,缓存,日志定义等绝大多数功能和第三方模块的配置 server块:配置…