点击上方“
AirPython
”,选择“置顶公众号”
第一时间获取 Python 技术干货!
很多读者看过之前的文章,发现我使用最多的是一款 Airtest 的自动化测试框架。
Airtest 是一款适合于游戏和 App 的 UI 自动化测试框架。
下面对 Airtest 在平时自动化和爬虫过程中的常见问题做一个汇总。
1、
优势
Airtest 上手难易度低,高效方便,结合 Python 脚本,可以完成一些自动化的操作,也可以快速开发出一款 App 端的爬虫。
2、
AirtestIDE 还是 Pycharm
如果只是简单的一些操作,可以使用官网提供的 AirtestIDE,通过简单的拖拽、按压、点击就能完成脚本录制和回放操作。
当然,想完成一些复杂的操作,就需要在 Python 虚拟环境下安装 pocoui 依赖库,然后借助 Pycharm 编写 Python 脚本来完成。
3、
Airtest 结合 Python 操作
只需要在 Python 虚拟环境下安装 pocoui 依赖库。
4、
有线连接和无线连接
利用 Airtest 驱动手机完成自动化操作,有两种方式:
有线连接、无线连接。
有线连接
:手机通过数据线连接 PC,确保使用 adb devices 命令能找到设备。
然后,通过下面的 Python 代码即可以完成连接操作。
self.poco = AndroidUiautomationPoco(screenshot_each_action=
False)
auto_setup(
__file__)
无线连接
:保证手机和 PC 在同一个网段,使用 adb 启动手机端的 adb 端口,然后使用下面的 Python 代码完成连接操作。
adb tcpip 6666
device = connect_device('android:///192.168.1.166:6666?cap_method=javacap&touch_method=adb')
poco = AndroidUiautomationPoco(device_1, screenshot_each_action=False)
auto_setup(__file__)
5、
常用操作
只需要通过 Android SDK 中的 Monitor 工具识别到元素 ID 或者文本,然后借助 Poco 依赖库完成常见的操作。
常用手势操作包含:点击、长按、滑动。
poco(元素ID).click()
poco(text=
u'元素文本内容').click()
poco(元素ID或者元素文本).long_click(长按的时长)
poco.swipe([起始坐标x轴, 起始坐标y轴], [终点坐标x轴, 终点坐标y轴], duration=滑动时长)
poco.swipe([
0.5,
0.8], [
0.5,
0.3], duration=
1)
poco.swipe([
0.5,
0.3], [
0.5,
0.8], duration=
1)
pocoui 已经封装了页面的常用操作,包含:回到桌面、模拟手机返回键、锁屏键、截屏、卸载、打开应用等操作。
def start_app(package, activity=None):
def stop_app(package):
def snapshot(filename=None, msg=""):
def home():
keyevent(
'BACK')
6、
异常处理
由于 Airtest 是一款 UI 测试框架,对可见的元素能通过元素 ID 或者文本内容拿到元素,处理列表的时候,滑动的时候经常会导致元素异常,这里要做好异常处理。
try:
self.__handle_good_list()
except:
pass
7、
元素获取不到
借助 Android SDK 中的 Monitor 查看元素属性,会发现有些元素没有 ID 和文本,这时候可以查看 UI 树的结构,找到一个可以确定的元素,通过父子关系拿到这个元素。
8、
点击无效
有的时候,通过 pocoui 拿到元素对象,但是点击没有效果。
这种情况,可以通过反复点击,直达某个元素出现来解决这个问题。
while
True:
if not
self.poco(元素ID).exists():
perform_click(
self.poco(元素ID, text=
'搜索'))
else:
break
推荐阅读
THANDKS
- End -