通过python调用adb命令实现用元素名称、id、class定位元素

本文介绍了一种纯Python实现的方法,通过ADB命令和XML解析来定位Android设备上的元素。在Android 4.0及以上版本,可以使用`adb shell uiautomator dump`获取布局信息,然后解析XML获取元素的属性如名称、ID和类名,计算出元素的中心坐标,并利用`adb shell input tap`进行点击操作。文中提供了一个简单的类结构,包含根据名称、类名和资源ID定位元素的方法,并演示了如何触发表单事件。
摘要由CSDN通过智能技术生成

Android自动化测试过程中,使用monkeyrunner可以通过坐标点击某个元素,但缺点是受屏幕分辨率影响,需要随时更改坐标位置。最近有使用了下Appium这个工具,优点是可以通过元素名称、id、class等属性定位,但是需要搭建稍微有点复杂的环境,然后我就想能不能不依赖任何环境,使用纯Python实现通过这几个属性定位,只需要直接执行python脚本就ok?接下来开始着手实现

首先需要Android版本高于4.0,使用这个命令“adb shell uiautomator dump”命令,执行“adb shell uiautomator dump /data/local/tmp/uidump.xml”,然后将该xml文件pull到本地,从里面可以看到手机上当前页面的布局,在note节点下可以找到这些属性:text,resource-id,class,bounds,知道这些内容后就可以使用python对该xml文件解析获取到对应的属性,取出bounds的值,计算出对应元素区域的中心坐标,接着使用adb shell input tap 命令就可以点击该坐标,如果有相同的属性值,那就需要得到一个坐标点的列表,以应用“1号店“为例,在桌面上通过应用名称“1号店”,点击进入应用,然后点击“手机充值”,截图如下:






用python简单实现:

[python]  view plain   copy
  1. #coding=utf-8  
  2.   
  3. import tempfile  
  4. import os  
  5. import re  
  6. import time  
  7. import xml.etree.cElementTree as ET  
  8.   
  9. class Element(object):  
  10.     """ 
  11.     通过元素定位,需要Android 4.0以上 
  12.     """  
  13.     def __init__(self):  
  14.         """ 
  15.         初始化,获取系统临时文件存储目录,定义匹配数字模式 
  16.         """  
  17.         self.tempFile = tempfile.g
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值