Appium连接真机
- 使用数据线连接电脑,然后选择
文件传输方式
- 打开手机设置拉至底部,点击
关于手机
,连续点击7次版本号
打开开发者模式 - 点击设置中的
系统与更新
,找到开发者选项
----> 打开USB调试即可 - 在终端中输入
adb devices
确定是否连接到手机,手机上有可能弹框让手动设置允许USB调试,点击确定即可。 - 连接完毕后,可以打开 appium服务开始整脚本啦。
每次打开app都要重新登录
在使用 python+appium+真机写脚本时,发现每次都是需要重新登录,需要在获取真机实例时补充参数:
{
"noReset": True
}
完整版如下
desired_caps = {
"platformName": "Android",
"deviceName": "HBDYD21507204329", # 通过 adb devices命令获取
"appPackage": "com.hpbr.bosszhipin",
"appActivity": ".module.launcher.WelcomeActivity",
"platformVersion": "10",
"noReset": True
}
# 获取到手机实例
driver = webdriver.Remote("http://127.0.0.1:4723/wd/hub", desired_capabilities=desired_caps)
打开app时报错,打不开app
明明是按照要求做的,但是总是打不开app,包名、活动页都没啥问题,为啥呢?
发现:我们通过adb shell dumpsys window | findstr mCurrentFocus
命令获取的可能不是真正的包名
以Boos为例,然后通过命令找到了包名和活动页:{33bc171 u0 com.hpbr.bosszhipin/com.hpbr.bosszhipin.module.main.activity.MainActivity}
放到脚本里,发现根本打不开app,直接报错了。
解决方案:
我们需要通过包名去拿详细的信息
adb shell dumpsys package com.hpbr.bosszhipin
在Non-Data Actions的 action MAIN:里面第一行就是,我们测试下通过终端在手机上打开app.
adb shell am start com.hpbr.bosszhipin/.module.launcher.WelcomeActivity
以上是app的真正入口包名及活动页。
Unexpected error while obtaining UI hierarchy
我们使用Uiautomatorviewer软件时进行元素定位,但是点击快照
时就蹦出错误,获取UI层次结构发生意外错误。
可能两种原因:
- JDK版本问题,最好使用1.8的
- android版本问题,Uiautomatorviewer不支持对8.0以后的版本直接截屏
详细解决方案请看这里