目录
包操作
屏幕滑动补充
shell命令执行
通过元素的instances定位元素
等待操作
见:python-App自动化测试框架——uiautomator2之元素操作方法(一)
python-App自动化测试框架——uiautomator2之元素操作方法(二)
python-App自动化测试框架——uiautomator2之UI元素定位和操作
1、获取当前应用的包名和activity名
d.app_current()
2、启动应用前停止此应用,添加stop=True参数,运行完成后自动关闭
d.app_start("com.sigma_rt.totalcontrol", stop=True)
3、停止应用,此方法会丢失应用数据
d.app_stop("com.sigma_rt.totalcontrol")
4、停止所有应用
d.app_stop_all()
5、停止所有应用,除了某些应用
d.app_stop_all(excludes=['com.sigma_rt.totalcontrol'])
6、列出所有运行中的应用
d.app_list_running()
7、列出已安装的所有应用包名
d.app_list()
可以使用这个方法判断是否安装了需要安装的包,如果没有安装或者已经安装则可以做对应的操作,如判断是否安装了包名为com.kedacom.flutter.smartsafety_hybrid_wulumuqi的包,如果没有则进行安装
import uiautomator2 as u d = u.connect('192.168.40.36:5556') apkname = 'com.kedacom.flutter.smartsafety_hybrid_wulumuqi' apkpath = '' if apkname in d.app_list(): print('已安装') else: d.app_install(apkpath)
8、判断app是否启动
两种方法:
通过调用app_wait(),返回运行的pid来判断:等待应用运行, 返回pid(int),如果没有进程则返回 0,app_wait()中还可以添加参数(front=True等待应用前台运行;timeout=10设置超时间,默认为20s)
import uiautomator2 as u d = u.connect('192.168.40.36:5556') apk = 'com.tblenovo.soundrecorder' pid = d.app_wait(apk) print(pid)
方法二:通过返回运行中的应用包名判断
import uiautomator2 as u d = u.connect('192.168.40.36:5556') apk = 'com.tblenovo.soundrecorder' if apk in d.app_list_running(): print('运行中') else: print('停止运行')
整个屏幕滑动,可以设置滑动的距离占屏幕宽度比例,如向上滑动屏幕比例的80%
d.swipe_ext("up", scale=0.8)
获取输出结果和exitCode(exitCode结果为0表示执行成功)
output, exit_code = d.shell("ps -A", timeout=60) print(output) print(exit_code)
仅获取执行结果内容等价于
output = d.shell("ps -A").output
仅获取执行的exitCode值
exit_code = d.shell("ps -A").exit_code
1、获取元素的数量
view_count = d(className="android.view.View").count
print(view_count)
print(len(d(clickable ="true"))) # 通过打印长度,获取可点击的元素个数
print(d(descriptionContains ="火灾").count) # 通过count()方法,获得包含火灾关键字的元素数量
2、如一个界面中有多个View元素,可以通过下面的方法定位对应的View元素,通过索引获取
d(className="android.view.View")[0] # 方法1
d(className="android.view.View", instance=0) # 方法2
3、通过xpath().get()方法下的info获得指定元素的信息
d.xpath('//*[@content-desc="你好"]').get().info
1、等待元素出现
# 返回对象,如果没有则返回None,最长等10s(默认),见:https://blog.csdn.net/JBY2020/article/details/120141368
d.xpath('//*[@content-desc="你好"]').wait()
# 返回布尔值,见:https://blog.csdn.net/JBY2020/article/details/120118234
d.xpath('//*[@content-desc="你好"]').exists
2、设置等待——默认控件等待时间
d.settings['wait_timeout'] = 20.0 # 方法1
d.implicitly_wait(20.0) # 方法2
3、设置等待——点击的等待延时
d.click_post_delay = 1.5 # 已被弃用的方法
d.settings['operation_delay'] = (.5, 1)
4、配置accessibility服务的最大空闲时间,超时将自动释放。默认为3分钟。(若两个步骤需要等待较长时间,而且不想下次发送指令时重启UiAutomator2,则可以将此时间加大)
d.set_new_command_timeout(200) # 参数为整数,单位为s