【airtest】自动化入门教程(四)Poco元素定位

目录

一、基础操作

1、通过属性名等方式

 2、通过属性组合

3、子节点方式

4、子节点加属性组合方式

5、孙节点offspring

6、兄弟节点sibling

7、父节点parent

8、正则表达式

9、直到某个元素出现

10、直到某个元素消失

二、通过局部坐标定位

1、使用局部坐标系的click接口

2、使用归一化坐标系的swipe接口

1、换行\n

2、不可见字符\u200B


前言:最难的还是元素定位,略作总结,供自己学习使用

一、基础操作

1、通过属性名等方式

通过元素的属性,一般有属性,唯一的话这个是最好方式

poco(name ='Name')
poco('name')  # name可缩写
poco(text="春天的菠菜")
poco(desc = '春天的菠菜')  # 这个使用很频繁

 2、通过属性组合

如果元素属性不能唯一定位,可通过组合属性方式

poco('NodeName',type = '类型名比如Button')

3、子节点方式

子节点不好定位,可通过父节点找到元素,再找子节点

 poco('父节点').child('子节点')  # 默认取第一个,也可以通过下标,我使用过-1,-2,1 ,2 等下标

4、子节点加属性组合方式

这里属性方式多种,根据需要选取

poco('节点名称').child(type='type属性')

5、孙节点offspring

当根据child().child()定位时,如果第二个child是前面一个的孙节点,不能定位到,要用offspring,child节点必须是上个节点的儿子节点,不能跨辈分

poco('父节点').child('子节点').offspring('孙节点')

6、兄弟节点sibling

兄弟可能是多个,可通过下标方式

poco('name').sibling()

7、父节点parent

获取当前节点的父节点

poco('name').parent()poco(text="春天的菠菜").parent().parent()

8、正则表达式


poco(textMatches='^春天的菠菜.')   #表达式根据自己需要写

9、直到某个元素出现

poco('属性').wait_for_appearance(timeout=3)  # wait until appearance within 3s

10、直到某个元素消失

元素.wait_for_disappearance()

二、通过局部坐标定位

1、使用局部坐标系的click接口

poco("com.miui.home:id/workspace").offspring("天气").offspring("com.miui.home:id/icon_icon").click()

默认在中心,通过局部坐标改变 点击 位置 

poco("com.miui.home:id/workspace").offspring("天气").offspring("com.miui.home:id/icon_icon").click([0,0])

 使用focus方法

poco("com.miui.home:id/workspace").offspring("天气").offspring("com.miui.home:id/icon_icon").focus([0,0]).click()

2、使用归一化坐标系的swipe接口

归一化坐标系就是将屏幕宽和高按照单位一来算,这样UI在poco中的宽和高其实就是相对于屏幕的百分比大小了,好处就是不同分辨率设备之间,同一个UI的归一化坐标系下的位置和尺寸是一样的,有助于编写跨设备测试用例。
归一化坐标系的空间是均匀的,屏幕正中央一定是(0.5, 0.5),其他标量和向量的计算方法同欧式空间。

movebocai= poco('属性').child('属性')
movebocai.swipe('up')
movebocai.swipe([0.2, -0.2])  # swipe sqrt(0.08) unit distance at 45 degree angle up-and-right
movebocai.swipe([0.2, -0.2], duration=0.5)

三、特殊情况

1、换行\n

poco("我在第一行\n我在第二行").click()

2、不可见字符\u200B

\u200B你看到的是红点点

poco("1710000\u200B【说明:这个几点点就跟几个\u200B】1111").click()

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

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

相关文章

电商系列之风控安全

> 插:AI时代,程序员或多或少要了解些人工智能,前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。 坚持不懈,越努力越幸运,大家…

使用Python的SQLite和Tkinter库来创建一个简单的查询

要使用Python的SQLite和Tkinter库来创建一个简单的查询系统,你可以遵循以下步骤: 安装所需的库: 如果你还没有安装sqlite3和tkinter库,可以使用pip进行安装。但通常,sqlite3是Python的标准库,而tkinter在大…

【Spring进阶系列丨第七篇】Spring框架新注解分类及详解

文章目录 一、Spring新注解1.1、Configuration注解1.1.1、定义一个类1.1.2、使用Configuration注解修饰类1.1.3、作用 1.2、Bean注解1.2.1、定义bean1.2.2、在主配置类中注册bean1.2.3、测试容器中是否有该bean1.2.4、注册bean的同时可以指定bean名称1.2.5、补充内容1.2.5.1、案…

JAVA IO流学习

File类: File类是java.io包中很重要的一个类 File类的对象可以代表一个文件或者目录,可以修改文件大小、文件最后修改日期、文件名等 File对象不能操作文件的具体数据,即不能对文件进行读和写的操作 File的构造方法: File&…

什么时候外部依赖接口慢拖死应用?

A应用调用B应用,当B应用的接口响应耗时平均都在3000ms的时,如果当前A调用B的请求数达300/s 那么在3s内A应用在途的请求数 300 * 3 900 ,按照servlet原理一个http的请求需要一个线程提供服务,即需要900个线程提供服务&#xff0c…

如何用Python读取Excel中的高亮标注,并统计不同高亮标注的数量

业务场景:当我们对Excel表格标记了不同颜色,我们怎么统计不同颜色的文本框的数量呢? 解决思路: 读取文本框的颜色种类颜色有哪些统计每个种类的个数 from openpyxl import load_workbookdef count_highlighted_colors_in_column…

政安晨【AIGC实践】(一):在Kaggle上部署使用Stable Diffusion

目录 简述 开始 配置 执行 安装完毕,一键运行 结果展示 政安晨的个人主页:政安晨 欢迎 👍点赞✍评论⭐收藏 收录专栏: 人工智能数字虚拟世界实践 希望政安晨的博客能够对您有所裨益,如有不足之处,欢迎在评论区提…

MySQL中的redo log 和 undo log

undo log和redo log 先引入两个概念: 当我们做了一些操作 (update/delete/insert),提交事务后要操作MySql中的数据。 为了能够提升性能,引入了两块区域:内存结构和磁盘结构。 磁盘结构: 主要存储的就是数据页&#x…

【C语言基础】:文件操作详解(前篇:准备知识)

文章目录 一、什么是文件以及文件的分类1.1 程序文件1.2 数据文件1.3 文件名 二、文本文件和二进制文件2.1 数据在文件中的存储 三、文件的打开和关闭3.1 流和标准流3.1.1 流3.1.2 标准流 3.3 文件指针3.5 文件的打开和关闭 一、什么是文件以及文件的分类 文件是指存储在计算机…

编程新手必看,学习python中字符串数据类型内容(8)

1、 Python3 字符串 字符串是 Python 中最常用的数据类型。我们可以使用引号( ’ 或 " )来创建字符串。 创建字符串很简单,只要为变量分配一个值即可。例如: var1 Hello World! var2 "Runoob"Python 访问字符串中的值 Python 不支持单…

Linux(centos7)部署spark

Spark部署模式主要有4种:Local模式(单机模式)、Standalone模式(使用Spark自带的简单集群管理器)、Spark On Yarn模式(使用YARN作为集群管理器)和Spark On Mesos模式(使用Mesos作为集…

自动化运维(九)Ansible 之Jinja2 模板

Jinja2 是一个 Python 的模板引擎库,常用于生成动态的文本内容,如配置文件、HTML 页面等。Ansible 使用 Jinja2 作为默认的模板引擎,用于在 playbook 中动态生成文件内容。 Jinja2 模板允许你在文本中使用变量、条件语句、循环等功能,以实现动态内容的生成。模板文件通常以 .j…

【python】模块测试方法三步走

第一步:写 main 函数 # 你的模块...if __name__ __main__:# 你的测试部分from .. import 上级模块名上级模块名.上级模块函数 ...# 测试部分第二步:加 __init__ 略 第三步:python -m 在项目目录下执行 python -m 命令 python -m 包.模块…

机器学习模型——关联规则

目录 关联规则 - 基本概念 关联规则的挖掘步骤: Apriori算法 Apriori算法简介: Apriori算法举例: Apriori算法优缺点: Apriori算法应用 FP-growth算法: FP-growth算法简介: FP-growth的数据结构: …

AI帮助写代码:在python中,如何替换字符串中指定位置的字符

用python编写一段代码,在下面的字符串中:#1#2#3#4#5#6#7#8#9#10#11#12#13#14#15#16#17#18#19#20#21#22#23#24#25#26#27#28#29,从第2个‘#开始,每个#前面加一个字符串 or ‘。 # 原始字符串 s "#1#2#3#4#5#6#7#8#9#10#11#12#13#14#15#…

多线程学习-线程池

目录 1.线程池的作用 2.线程池的实现 3.自定义创建线程池 1.线程池的作用 当我们使用Thread的实现类来创建线程并调用start运行线程时,这个线程只会使用一次并且执行的任务是固定的,等run方法中的代码执行完之后这个线程就会变成垃圾等待被回收掉。如…

2024最新GPT4.0使用教程:GPTs,AI绘画,AI换脸,AI绘画,文档分析一站式解决

一、前言 ChatGPT3.5、GPT4.0、相信对大家应该不感到陌生吧?简单来说,GPT-4技术比之前的GPT-3.5相对来说更加智能,会根据用户的要求生成多种内容甚至也可以和用户进行创作交流。 然而,GPT-4对普通用户来说都是需要额外付费才可以…

超强AI辅助工具:BitoCLI的简单使用

今天要推荐一个爱不释手的好东西–Bito; 从事相关工作的人大概率在自己的代码编辑器中已经用上了Bito的插件版本,所以这里主要介绍的是一个适合与所有人且方便快捷的Bito CLI,也就是Bito的命令行版本。 BitoCLI 从官方介绍来看,这是一款为 …

卸载不留痕,App Cleaner Uninstaller助你打造清爽Mac

在数字时代,我们的Mac设备上积累了大量的应用程序,其中一些可能不再需要或不再使用。随着时间的推移,这些不再使用的应用程序可能会占用宝贵的存储空间,影响设备的性能。为了解决这个问题,App Cleaner & Uninstall…

【C+ +初阶】前言篇章---C+ +的广袤

目录 1.C语言到C的过渡 2.C的发展历程 2.1C语言的诞生 2.2 c的历史版本 3.c 的地位 4. c的应用场景 4.1. 操作系统以及大型系统软件开发 所有操作系统几乎都是C/C写的 4.2. 服务器端开发 后台开发: 4.3. 游戏开发 4.4. 嵌入式 4.5. 数字图像处理 4.6. 人工智能 4.7.…