airtest基础
1.新建airtest文件夹,点击左上角“+”号
选择【.air Airtest项目】。
手机端的USB调试要点选连接,再在airtest的设备列表里点选connect,若同时连接多台手机,则在列表里选择一台即可。
若要关闭当前的设备,点选“工具”符号,选择“断开当前设备”。
连接好手机和airtest后,在左侧选择【Android】,在代码区会弹出黄色提示,选择“Yes”,在代码块会自动增加两行代码。
from poco.drivers.android.uiautomation import AndroidUiautomationPoco
poco = AndroidUiautomationPoco(use_airtest_input=True, screenshot_each_action=False)
没有的话,复制上去也行,或者拔掉手机重新操作一次。
左下角有三个控件,最常用的是第一个,如图所示,第一个是用来定住右侧的手机页面,使鼠标点击右侧的页面不会触发操作,点击右侧手机页面任意一处屏幕中下方会显示点选的按钮和布局等属性值。
(PS:不知是我的问题还是这个软件本身有bug,定位经常不灵敏,还会闪退,我的解决办法是拔掉手机再插上去,实在不行就用android模拟器来定位)
点击屏幕中的Brazoria County,在软件中下方就可以看到它的属性值。
常用的属性有:name,text,resourceId,pos,size,selected等。
name和resourceId一样,都是元素的ID,但是它有时并不唯一,有些并列的元素其ID都一样,在左下角可查看其上一级,然后通过child的方式来定位目标元素。
text是元素的文本值,可通过text来定位目标元素,虽然text定位比较简单,但建议使用ID来定位,因为文本不一定一成不变,增加了后续返工的隐患。
size和pos用来取控件的可点击范围,selected可以通过其值True或False来判断是否有选中它。
airtest之poco获取属性的接口get_text,get_name
通过name的值,获取相对应的text文本,代码如下
# -*- encoding=utf8 -*-
__author__ = "Administrator"
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)
value=poco("com.instagram.android:id/secondary_label").attr('text')
print(value)
运行结果如下:
常见的几种用法如下:
滑屏代码如下:
左下角为(0,0),右上角为(1,1),可确定要滑动的范围。duration表示时长。
poco.swipe([0.5,0.2],[0.5,0.8],duration=1.0)
点击的代码如下:
poco(name='com.instagram.android:id/action_bar_button_back').click()
输入文字:
poco(name='com.instagram.android:id/action_bar_search_edit_text').set_text('wig')
延时代码如下,括号内表示延时多长时间。
time.sleep(3)
异常处理如下:
except Exception as e:
print(e)
pos的使用:
a=poco(name='com.instagram.android:id/message_content')[0].child()[0]
print(a.attr("pos"))
print(a.get_text())
li=a.attr("pos")
print(li[0])
if li[0]<0.5:
print("我是甲方")
for in range的使用:
for n in range(2, 6):
try:
print(n)
if not in 的使用:
if comments not in a:
a.append(comments)
child的使用:
a = poco(resourceId='com.instagram.android:id/recycler_view')
print(len(a))
print(len(a[0].child()))
a[0].child()[3].click()
selected的使用:
value=poco("com.instagram.android:id/row_feed_button_like").attr('selected')
if value==False:
poco(resourceId='com.instagram.android:id/row_feed_button_like').click()
else:
pass