在做自动化测试的时候, 千万千万要多多的测试, 重要的事情说三遍!~~~~~~
1. 当使用d(resourceId)或者其他d(什么)找不到这个点或者找的点不太精准的时候, 可以使用className, 在下面的这部分可以找到
当你点击左侧代码栏的时候, 设备显示页面会显示出你所点的位置的对应位置, 会用框框标记起来.
然后, 找元素的时候就可以找网页元素一样(当然, 有些点可能不会显示, 属于正常现象)找到你想要的点的位置.
2. 有些时候我会经常使用app_start这个函数, 但是会对应用程序的安装包名会出现一些纠结这时候可以使用这个方法:
adb shell dumpsys window w |findstr \/ |findstr name=
先打开你想要获取包名的应用程序, 然后cmd中输入这句话即可
注意: 只允许连接一台设备
3. 关闭除什么之外的所有的app, 是个列表, 可以放多个!
d.app_stop_all(excludes=['com.github.shadowsocks'])
4. 在进行多次测试的时, 有时候输入框会输入不进去文字, 即使以前可以完美运行. 所以这个时候为了保证脚本的成功率我们需要考虑用adb shell命令去对输入框输入文字, 这个方法相对来说是非常稳定的.
import os
import subprocess
# 需要对输入框先进行聚焦或者点击
os.popen('adb shell input text hello')
5. 有些时候我们需要对元素的文本信息进行模糊查找, 应为它会发生一些变化, 但是主体的文字还是存在, 只是可能会多出一些描述. 所以这个时候用text="xxx"就不合适了!
推荐使用以下方法:
descriptionContains: 根据描述
textContains: 根据文本
以上这两个方法只需写入所获取信息的一部分即可, 一般输入的时主体部分
6. 如果你能看到这里,恭喜你!只要学会这个,基本以后写脚本就没有任何大的阻碍了。
对于一些app页面,按钮的文本,描述提取不出来,可以说不用坐标点的话,这个按钮根本无法获取并点击(参杂着的WebView),但又不想根据坐标点来进行点击。那么推荐使用还未推广的uiautomator2的ocr------文字识别。
import uiautomator2 as u2
import uiautomator2.ext.ocr as ocr
d = u2.connect()
ocr.API = "http://xxxxxx"
u2.plugin_register("ocr", ocr.OCR)
d.ext_ocr("按钮显示的文本").click()
注意:1. 这里需要将uiautomator2升级到最新版才能使用, 博主使用的版本是0.1.4.dev43
2. 这里还需要一个api地址,应该是将页面截图,传到这个地址进行识别检测,随后返回一些数据,处理完之后,就能直接使用按钮显示的文本进行点击。
缺点:如果这个api地址不能用了,那就尴尬了,所以如果能尽量解决的就尽量解决,不能图省事。