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

news2024/11/27 1:27:45

目录

一、基础操作

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.coloradmin.cn/o/1565173.html

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

相关文章

计算多个元素的累乘结果累乘器start默认初始为1 math.prod()

【小白从小学Python、C、Java】 【计算机等考500强证书考研】 【Python-数据分析】 计算多个元素的累乘结果 累乘器start默认初始为1 math.prod() [太阳]选择题 请问题目中的代码最后输出什么? import math list1 [1, 2, 3] print("【显示】list1 ",list1) pri…

留学生在美国大学利用AI工具到底算不算作弊呢?

自2022年以来,美国大学就开启了一场AI作弊与反作弊大战 战场小至测验,大至申请 这场战争并没有一方胜利,作弊者心思费尽 校方反作弊弄得教授们苦不堪言 那么作为中国留学生该如何避免这场战役呢? 毕竟还是学业要紧呢…… 故事…

[Leetcode笔记] 动态规划相关

前言 写题目写到了一些和动态规划相关的内容,所以在这里记录一下 LCR 089 题解思路 总的来说,就是用一个数组去存储当前的最优解,然后从0开始一路向上顺推过去,求得最后一位的最优解。 class Solution { public:int rob(vect…

【HTML】标签学习(下.2)

(大家好哇,今天我们将继续来学习HTML(下.2)的相关知识,大家可以在评论区进行互动答疑哦~加油!💕) 目录 二.列表标签 2.1 无序列表(重点) 2.2有序列表(理解) 2.3 自定义列表(重点…

数据结构算法系列----广度优先搜索(bfs)

目录 一、什么是bfs 二、bfs和dfs的差异 搜索顺序: 数据结构: 搜索方式: 三、bfs解决的主要问题 四、例题 一、什么是bfs BFS(广度优先搜索)是一种图搜索算法,用于在图或树数据结构中进行遍历。BFS从…

管理科学笔记

1.线性规划 画出区域,代入点计算最大最小值 2.最小生成树 a.断线法,从大的开始断 b.选择法,从小的开始选 3.匈牙利法 维度数量直线覆盖所有的0 4.一直选最当前路线最短路径 5.线性规划 6.决策论

反射——获取Class对象的三种方法,构造器、成员变量、方法

作用 学习如何获取类的信息,操作它们 获取class对象的三种方法 package com.zz.reflection;import com.zz.Interface.studentMannger.ClassManager;//目标:获取class对象 public class Test1Class {public static void main(String args[]) throws Class…

【Qt】使用Qt实现Web服务器(九):EventSource+JSON实现工业界面数据刷新

1、效果 效果如下,实时刷新温度、湿度 2、源码 2.1 index.html <html><body> <!-- 页面布局,本人对HTML标签不熟悉,凑合看吧 --> <div><label for

微信怎么恢复好友?7个方法助你轻松寻回失联好友

在数字化社交日益盛行的今天&#xff0c;微信作为我们日常生活中不可或缺的沟通工具&#xff0c;承载着与亲朋好友、同事伙伴之间的深厚情谊。然而&#xff0c;有时由于误操作或其他原因&#xff0c;我们可能会不小心删除了某些重要的微信好友&#xff0c;这时&#xff0c;如何…

【二叉树】Leetcode 105. 从前序与中序遍历序列构造二叉树【中等】

从前序与中序遍历序列构造二叉树 给定两个整数数组 preorder 和 inorder &#xff0c;其中 preorder 是二叉树的先序遍历&#xff0c; inorder 是同一棵树的中序遍历&#xff0c;请构造二叉树并返回其根节点。 示例1&#xff1a; 输入: preorder [3,9,20,15,7], inorder …

刷题之动态规划-子数组

前言 大家好&#xff0c;我是jiantaoyab&#xff0c;开始刷动态规划的子数组类型相关的题目 动态规划5个步骤 状态表示 &#xff1a;dp数组中每一个下标对应值的含义是什么>dp[i]表示什么状态转移方程&#xff1a; dp[i] 等于什么1 和 2 是动态规划的核心步骤&#xff0c;…

深度学习理论基础(五)卷积神经网络CNN

目录 前述&#xff1a;卷积神经网络基础1.卷积网络流程2.卷积网络核心3.卷积下采样4.卷积上采样--转置卷积 一、卷积神经网络层1.卷积层&#xff08;1&#xff09;内部参数&#xff1a;卷积核权重&#xff08;2&#xff09;内部参数&#xff1a;偏置&#xff08;3&#xff09;外…

dm8 开启归档模式

dm8 开启归档模式 1 命令行 [dmdbatest1 dm8]$ disql sysdba/Dameng123localhost:5237服务器[localhost:5237]:处于普通打开状态 登录使用时间 : 3.198(ms) disql V8 SQL> select name,status$,arch_mode from v$database;行号 NAME STATUS$ ARCH_MODE ----------…

DETR【Transformer+目标检测】

End-to-End Object Detection with Transformers 2024 NVIDIA GTC&#xff0c;发布了地表最强的GPU B200&#xff0c;同时&#xff0c;黄仁勋对谈《Attention is All You Need》论文其中的7位作者&#xff0c;座谈的目的无非就是诉说&#xff0c;Transformer才是今天人工智能成…

【JavaWeb】百度地图API SDK导入

百度地图开放平台 | 百度地图API SDK | 地图开发 (baidu.com) 登录注册&#xff0c;创建应用&#xff0c;获取AK 地理编码 | 百度地图API SDK (baidu.com) 需要的接口一&#xff1a;获取店铺/用户 所在地址的经纬度坐标 轻量级路线规划 | 百度地图API SDK (baidu.com) 需要的…

第117讲:深入MySQL性能优化:从多个角度提升数据库性能

文章目录 1.从哪些角度去考虑MySQL的优化2.数据库服务器的选型3.从操作系统层面去优化MySQL数据库3.1.关于CPU方面的优化3.2.关于内存方面的优化3.3.关于磁盘IO方面 4.应用端的优化5.数据库系统优化工具6.数据库系统参数优化6.1.最大连接数的优化&#xff08;max_connections&a…

【Entity Framework】EF日志-简单日志记录

【Entity Framework】EF日志-简单日志记录 文章目录 【Entity Framework】EF日志-简单日志记录一、概述二、EF日志分类三、简单的日志记录3.1 配置3.2 日志记录到控制台3.3 记录到凋试窗口3.4 记录到文件3.5 敏感数据处理3.6 详细查询异常3.6 日志级别3.7 消息内容和格式设置 一…

Paragon NTFS for Mac15直装版2024最新安装包下载

Paragon NTFS for Mac 是一款专为 Mac 用户设计的软件&#xff0c;它解决了 Mac 系统无法直接读写 NTFS 格式硬盘的问题。通过安装这款软件&#xff0c;Mac 用户可以像使用本机磁盘一样&#xff0c;轻松地在 NTFS 格式的硬盘、U 盘等存储设备上读写文件&#xff0c;无需进行任何…

Protobuf 二进制文件学习及解析

0. 简介 protobuf也叫protocol buffer是google 的一种数据交换的格式&#xff0c;它独立于语言&#xff0c;独立于平台。google 提供了多种语言的实现&#xff1a;java、c#、c、go 和 python&#xff0c;每一种实现都包含了相应语言的编译器以及库文件。 由于它是一种二进制的…