连接安卓设备(模拟器)
找到AiretestIDE右侧的设备窗(如果没有,在顶部导航栏找到: 窗口 - Devices),第一个部分就是移动设备的连接,连接安卓设备的操作如下: 1,先打开本地的模拟器,然后打开模拟器的开发者模式 2,点击远程设备连接的按钮 3,输入设备号 4,点击连接按钮 5,设备就会被列出来,点击connect就好 三个备选的连接参数:
-
Use javacap: 这个选项是为了防止设备出现黑屏的情况,如果你在连接模拟器之后出现黑屏的情况,可以勾选这个选项。 -
Use ADB Orientation:如果设备连接之后,屏幕方向不对,可以尝试勾选这个选项。 -
Use ADB Touch:一般不建议勾选,只有部分无法点击屏幕的设备才需要使用。
连接成功就是下图这个样子,你可以在设备窗中看到你的模拟器。
常用操作
安装一个APK
'''
install(r'apk在本地的路径',install_options=["r","t","l","s","d","g"])
可选参数的含义:
r:如果设备中已经存在该APK,则替换该APK,重新
t:允许测试的APK包
l:锁定该应用程序
s:允许把APK安装到sd卡上去
d:设备上已存在一个APK,现在要安装一个版本较低的APK,此操作为覆盖安装
g:安装APK时,为APK授予它所需要的权限
'''
install(r'F:\APP\base.apk')
打开APK
start_app启动应用程序
'''
使用adb命令查看包名
adb shell pm list packages 列出所有的包名
adb shell pm list packages -f 列出apk的所在位置
包名格式eg:com.baidu.BaiduMap
'''
start_app("com.baidu.BaiduMap")
使用touch启动应用程序
使用touch的方法:Airtest辅助窗中点击touch,然后log查看窗会提示你框选截图,比如现在要打开百度地图,只需要把百度地图的icon截一下图,然后松开鼠标,脚本里就会出现如下图所示的内容,运行脚本的时候,airtest会使用图像匹配找到百度地图,然后点击它,这样应用程序就会打开了。
sleep延迟操作
我们在启动百度地图的时候会发现,启动页有大概2-3s的时间,这个时候我们不需要点击什么,所以给它设置一个等待时间,sleep的使用场景大致就是这个样子,等待几秒执行下一个操作,比如上传一个图片,也需要设置等待时间,否则图片不能完全上传会影响后面的操作。使用方法也很简单:
sleep(3)
text文本输入
假如我们现在需要搜索“人民广场”,我们要执行的操作就是点击搜索输入框,弹出文本输入框,输入“人民广场”,然后回车,
touch(Template(r"tpl1640591369408.png", record_pos=(-0.095, -0.781), resolution=(810, 1440)))
touch(Template(r"tpl1640591324321.png", record_pos=(-0.094, -0.773), resolution=(810, 1440)))
text("人民广场")
keyevent("{ENTER}")
注:代码复制过来,图片会被以代码的形式粘贴在这里,下图为脚本中的实际样子
keyevent键盘输入
keyevent("^a")
keyevent("^c")
keyevent("{BACKSPACE}")
keyevent("{DEL}")
keyevent("{ENTER}")
keyevent("^v")
keyevent("{HOME}")
更多Android按键码参考: https://developer.android.com/reference/android/view/KeyEvent
滑动操作
swipe单指滑动
从海伦路下滑 滑动到蓝村路 从陆家浜路上滑 滑动到江浦公园
swipe(Template(r"tpl1640593232273.png", record_pos=(-0.331, 0.374), resolution=(810, 1440)), vector=[0.6013, -0.5162])
swipe(Template(r"tpl1640593356860.png", record_pos=(-0.327, -0.39), resolution=(810, 1440)), vector=[0.6338, 0.4979])
swipe((100,900),(300,300))
swipe((100,900),(300,300), duration=1, steps=2)
pinch双指捏合滑动
pinch()
pinch('in',center = (600,600))
sleep(3)
pinch('out',center = (600,600))
pinch('out',center = (600,600),percent = 0.2)
断言
如果断言失败,会报出断言失败AssertionError 的错误。
assert_exists(Template(r"tpl1640597475387.png", record_pos=(0.088, 0.183), resolution=(810, 1440)), "找到了目标图片")
assert_not_exists(Template(r"tpl1640597559651.png", record_pos=(0.089, 0.177), resolution=(810, 1440)), "没有找到目标图片")
assert_equal(1, 1, "msg:实际值:1和预测值:1一致")
assert_not_equal("1", "2", "实际值:1和预测值:2不一致.")
wait等待
参数详解: Template:目标元素 timeout:等待x秒之后,如果图片依旧没有出现,抛出异常 interval:每间隔x秒就查找一次图片 intervalfunc:每次找不到这个图片就会执行该函数
def NotFound():
print("元素没有找到")
wait(Template(r"tpl1640596080020.png", record_pos=(0.127, -0.062), resolution=(810, 1440)),timeout = 10,interval = 3,intervalfunc = NotFound)
鼠标的单击,双击,左击,右击
touch(600.600)
touch(Template(r"tpl1640597122385.png", record_pos=(0.093, 0.177), resolution=(810, 1440)))
touch((600,300),duration = 2) # 点击持续2秒
touch((600,300),time = 2) # 点击两次
touch(Template(r"tpl1640596975627.png", record_pos=(0.091, 0.146), resolution=(810, 1440)),target_pos = 5)
touch((600,300),right_click = true)
double_click(600,600)
|