python-UiAutomator学习&使用

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python-UiAutomator学习&使用相关的知识,希望对你有一定的参考价值。

一、安装

源码地址:

https://github.com/xiaocong/uiautomator#basic-api-usages

①下载zip包,解压到本地目录下

②进入对应目录下,执行

$sudo python setup.py install 

命令行提示uiautomator安装成功,现在可以开始用python编写uiautomator脚本了~~

 

二、使用

https://github.com/xiaocong/uiautomator#basic-api-usages

作者提供了所有API的解释说明,可直接查询使用。

还有个PPT,PPT地址:

http://xiaocong.github.io/slides/android-uiautomator-and-python/#/main

 

以下是在具体操作TV的过程中使用到的API,记录一下 ~~~~

#coding:utf-8
import time
from uiautomator import device as d
d.press.enter()time.sleep(5)
print(d(className="android.widget.FrameLayout").child(resourceId="com.stv.launcher:id/metro_space").child_by_instance("0", className="android.view.View").count)
print (d(className="android.widget.FrameLayout").child(resourceId="com.stv.launcher:id/metro_space", className="android.support.v4.view.ViewPager").count)
print (d(className="android.widget.FrameLayout").child(resourceId="com.stv.launcher:id/metro_space", className="android.support.v4.view.ViewPager")[0].info)
print (d(className="android.widget.FrameLayout").child(resourceId="com.stv.launcher:id/metro_space", className="android.support.v4.view.ViewPager")[1].info)
print (d(className="android.view.View").count)
print (d(className="android.view.View")[0].info)
print (d(className="android.view.View")[1].info)
print (d(className="android.widget.FrameLayout").child(resourceId="com.stv.launcher:id/metro_space").child(index=2).count)
print (d(text="热点聚焦").info)
d(text="播放记录").click()
print (d.exists(className="android.widget.FrameLayout"))
d.dump("home.xml")
print (d(resourceId="com.letv.android.tv.letvlive:id/title",instance=0).text)
d.click(1100,850)

 

三、在TV测试使用过程中遇到的问题及局限性

还是比较方便,基本的UI操作基本都能覆盖。但使用起来还是不够得心应手。

1.TV上的click操作和手机上不同,手机上可直接实现点击操作,但TV上的click操作首先实现的是焦点移动,再次click或者pressEnter才实现点击进入操作;但TV上某些APP并未支持click移动焦点操作,只支持模拟遥控器输入实现上下左右移动;

用Java实现的时候,采用的方法是:模拟遥控器上下左右移动直到找到所需控件,然后再进行操作。但python未找到API可定位当前控件是否focused,无法实现该功能。(或许作者的初衷也只是方便手机使用,毕竟API中也提供了大量缩放、滑动等操作,这些操作更适用于手机设备)
 
2.定位到元素,想打印出控件info,TV桌面经常重启,导致运行timeout 。 这个问题使用java的时候未出现过,目前无法定位python在查询控件信息并显示出来的过程中执行了什么操作又或者是桌面自身BUG? 待定。。
 

以上是关于python-UiAutomator学习&使用的主要内容,如果未能解决你的问题,请参考以下文章

Python-UiAutomator2实现Android自动化测试

uiautomator2 安装

uiautomator2 介绍及使用

UIautomator2-手动init(安装)指南

机器学习应用——强化学习&课程总结 实例 “自主学习Flappy Bird游戏”(MDP&蒙特卡洛强化学习&Q-learning&DRL&DQN)

机器学习&深度学习资料