首页 > 其他分享 >Poco框架实操:获取节点属性的高效技巧(一)

Poco框架实操:获取节点属性的高效技巧(一)

时间:2024-04-25 11:00:32浏览次数:14  
标签:控件 get 获取 Poco 实操 text poco 节点

此文章来源于项目官方公众号:“AirtestProject”
版权声明:允许转载,但转载必须保留原链接;请勿用作商业或者非法用途

一、前言

上期推文我们介绍了Poco UI树下的节点关系,以及通过节点关系去寻找我们所需要节点的方法,那么本周我们来分享一下,当我们寻找到所需要节点后,能获取到什么信息呢?又怎么去获取呢?

二、Poco节点的属性操作

2.1 获取控件文本属性:get_text( )

在UI自动化测试中,获取节点的文本信息是常见的需求。Poco框架提供了get_text()方法,它能够轻松提取指定元素的文本内容。无论是按钮上的提示文字,还是列表项的显示内容,get_text()都能一一捕获,从而实现对节点的文字内容进行操作或展示。

poco("游戏增强器").get_text()

2.2 获取控件名字属性:get_name()

get_name()方法可以帮助快速获取元素的名称,这对于识别和操作节点控件非常重要。通过使用该方法,可以方便地获取到节点的名称,从而更好地进行元素的定位和后续操作。

poco("文本输入").get_name()

2.3 获取控件尺寸大小属性:get_size()

了解节点控件的尺寸对于测试控件的布局和设计等至关重要。get_size()方法提供了一种简便的方式来获取元素的宽度和高度,可以确保元素在不同设备和分辨率上的正确显示。

poco("文本输入").get_size()

2.4 获取控件的顶部、右侧、底部和左侧的归一化坐标系:get_bounds()

get_bounds()方法返回节点元素的边界框参数,包括元素的顶部(top)、右侧(right)、底部(bottom)和左侧(left)这些与标准坐标系中屏幕边缘的归一化坐标。这些信息可以用于截图控件、点击控件等,可以更好地规划自身的脚本设计。

poco("文本输入").get_bounds()

2.5 获取控件位置大小属性:get_position()

get_position()返回控件元素的中心坐标,通常以相对坐标(x,y)返回坐标,通过获取控件元素的中心坐标,我们可以在需要的时候更快地定位到该位置,从而实现一些交互操作。

poco("播放").get_position()

2.6 获取控件属性:attr("type")

attr("type")方法可以检索节点的特定属性值,需要在括号内输入所需要的属性值(需要以字符串的形式输入),即可查询到所需要的属性值。当上述查询属性的语句都无法查询到自己所需要的属性值的情况下,可以通过attr("type")去进行查询。

poco("文字输入").attr("text")

三、实际使用案例

结合上述所讲的获取控件方法,我们用个小小的案例去演示一下日常使用的场景。

参考代码如下:

# -*- encoding=utf8 -*-
__author__ = "Airtest"

from airtest.core.api import *
auto_setup(__file__)


from poco.drivers.android.uiautomation import AndroidUiautomationPoco
poco = AndroidUiautomationPoco(use_airtest_input=True, screenshot_each_action=False)

#打开网易云音乐app
start_app("com.netease.cloudmusic")
sleep(6.0)


#【使用get_text】获取当前输入在搜索框上的文字
tem = poco("com.netease.cloudmusic:id/searchHintText").get_text()
print("目前搜索框内的文字是:" + tem)

#【使用get_name】获取“每日推荐”在UI树上的节点名
name = poco(text="每日推荐").get_name()
print("该控件的name为:" + name)

#点击进入每日推荐界面
poco(text="每日推荐").click()

#【使用get_size】获取在“每日推荐”界面上的广告大小
adsize = poco("com.netease.cloudmusic:id/daily_ad_banner").get_size()
print("该广告位的长宽大小为:" + name)

#【使用get_bounds】获取在“每日推荐”界面上的广告顶部、右侧、底部和左侧的归一化坐标系
adbounds = poco("com.netease.cloudmusic:id/daily_ad_banner").get_bounds()
str(adbounds)
print(f"该广告位的顶部、右侧、底部和左侧的归一化坐标系分别为:{adbounds}")
sleep(1.0)

#【使用get_position】获取在“每日推荐”界面上的广告位置坐标
adpos = poco("com.netease.cloudmusic:id/daily_ad_banner").get_position()
str(adpos)
print(f"该广告位的位置坐标为:{adpos}" )
sleep(1.0)

#【使用attr去查询】获取在“每日推荐”界面上的广告位置坐标
adpos2 = poco("com.netease.cloudmusic:id/daily_ad_banner").attr("pos")
str(adpos2)
print(f"利用attr获取的位置坐标为:{adpos2}" )
sleep(1.0)

四、小结

本周我们介绍了5种查询Poco 节点属性值的方式,其中包括:

1、get_text( )获取节点的text属性值

2、get_name( )获取节点的name属性值

3、get_size( )获取节点的size属性值

4、get_bounds( )获取节点的顶部、右侧、底部和左侧的归一化坐标系

5、get_positions( )获取节点的位置坐标

6、attr("type")获取所需要的属性值

通过这些方法,我们能够更深入地理解和使用Poco的UI树节点,可以更进一步地完善自己的脚本。如果同学们在使用Poco进行自动化测试的过程中,遇到了问题,或者有任何想要深入了解的知识点,欢迎在官方交流群里告诉我们或者提交issue,也欢迎大家投稿。后续我们会带来更多精彩的有关Poco专题内容,请大家持续关注我们,敬请期待哦!


AirtestIDE下载:airtest.netease.com/
Airtest 教程官网:airtest.doc.io.netease.com/
搭建企业私有云服务:airlab.163.com/b2b

官方答疑 Q 群:526033840

标签:控件,get,获取,Poco,实操,text,poco,节点
From: https://www.cnblogs.com/AirtestProject/p/18157125

相关文章

  • springboot的netty代码实操
    参考:https://www.cnblogs.com/mc-74120/p/13622008.htmlpom文件<dependency><groupId>io.netty</groupId><artifactId>netty-all</artifactId></dependency>启动类@EnableFeignClients@EnableDiscoveryClient@EnableSchedu......
  • Cassandra节点重启失败 java.lang.RuntimeException: A node with address *** alread
    问题杀死一个节点后重启报节点已存在:java.lang.RuntimeException:Anodewithaddress***alreadyexists,cancellingjoin.Usecassandra.replace_addressifyouwanttoreplacethisnode.解决方法到另一个节点Cassandra的bin目录./nodetoolstatus查看需要重启......
  • 删除链表中(有头节点)一个最小值节点
    删除链表中(有头节点)一个最小值节点/********************************************************************** name : deletelinkedlist* function:删除链表中(有头节点)一个最小值节点* argument:* @Head:链表结构体头头节点地址** retval :调用成功......
  • 设计一个算法删除单链表L(有头节点)中的一个最小值结点
    数据结构链表笔试题:设计一个算法删除单链表L(有头节点)中的一个最小值结点。/****************************************************************** * filename : linkedlist.c* author : [email protected]* data : 2024/04/22* function : 删除单链表中的一个最小......
  • k8s node节点报错 dial tcp 127.0.0.1:8080: connect: connection refused
    前言在搭建好kubernetes环境后,master节点拥有control-plane权限,可以正常使用kubectl。但其他node节点无法使用kubectl命令,即使同步过去/root/.kube/config文件到各个node节点上,也不行。解决检查KUBECONFIG变量:确保KUBECONFIG环境变量正确设置。KUBECONFIG......
  • 2024-04-21:用go语言,给一棵根为1的树,每次询问子树颜色种类数。 假设节点总数为n,颜色总
    2024-04-21:用go语言,给一棵根为1的树,每次询问子树颜色种类数。假设节点总数为n,颜色总数为m,每个节点的颜色,依次给出,整棵树以1节点做头,有k次查询,询问某个节点为头的子树,一共有多少种颜色。1<=n,m,k<=10^5。答案2024-04-21:来自左程云。chatgpt大体步骤如下:大体过程描述......
  • JZ86 在二叉树中找到两个节点的最近公共祖先
    classSolution{public://用来判断是否找到节点boolflag=false;//dfs遍历得到路径,递归遍历,也就是先序遍历根左右//传入参数:节点,容器,要找的值voiddfs(TreeNode*root,vector<int>&path,into){//判断根节点的值是否是要找的......
  • cenots7.6系统报“fork:Cannot allocate memory” 报错的解决方法(实操)
    今日早晨上班上报一台虚拟机无法ssh连接,想着大抵是关机了,又或是存储满了(经常遇到这样的事情,因为基本上都是做的厚置备,所以会导致分配容量大于实际容量)。打开后台查看报警事件,没有!预感到此事不大简单。。。。进入控制台,输入w好家伙,输出fork:Cannotallocatememory翻译一下:内......
  • 递归获取某个节点的儿子节点
    java代码:publicList<Department>getAllChildrenDepartmentsFlat(LongparentId){List<Department>allDepartments=departmentRepository.findAll();//假设使用JPA的Repository来进行数据库操作List<Department>allChildren=newArrayLi......
  • 万象奥科邀您参加RK3568+AMP混合部署线下实操活动-北京站
    4月25日,万象奥科将携手RT-Thread在北京举办线下workshop,带您体验RK3568+OpenAMP实现RT-Thread与Linux同时运行的开发方式,实现在电力、机器人、工业控制、工业互联网、新能源等领域的高效应用。 Workshop内容:混合部署方式大公开:揭秘混合部署的原理与显著优势,助力系统运行更稳健......