问答 appium 使用 driver.start_activity 启动 APP 后,定位元素超时

xpcs · 2021年08月25日 · 最后由 Eason 回复于 2021年09月24日 · 3448 次阅读

caps 中配置
HWI_AL00 = {
"platformName": "Android",
"platformVersion": "9",
"deviceName": "HWI_AL00"
}

caps 中未填写包名,获取 driver

driver = webdriver.Remote(appium_server_url, desired_caps)

然后通过 driver.start_activity 启动被测的 app

进行元素定位操作,会报超时

但是如果在 caps 中配置上包名和 activity,启动 app,定位就没有问题

共收到 6 条回复 时间 点赞
xpcs #6 · 2021年08月25日 Author

caps 中不填写包名,目的是为了当手机上未安装被测包,不会发生报错,否则会报错。

xpcs 回复

1、start 之后给一下强制等待,看看行不行
2、还不行的话,start 之后等待,然后 getPageSource 看看有没有你要的元素,会有包名,看到当前 appium 所在的包名是不是你被测包的

xpcs #3 · 2021年08月25日 Author
Eason 回复

感谢大佬,我试试打个源码看看。目前遇到问题是如果给包和 activity 写到 caps 配置中,能定位到,所以定位信息肯定没错,应该就是没获取到操作句柄,可我打印 context,是 NATIVE_APP,没毛病。

xpcs #4 · 2021年08月25日 Author
xpcs 回复


源码打出来了,元素加载出来了定位不到,可能有 BUG - -。不弄了,caps 中还是写上 app 吧,如果机器没安装报错,捕获异常,处理一下异常

xpcs #5 · 2021年08月25日 Author

通过异常处理,已解决

附上安装 apk 代码,可以自动处理权限

xpcs 回复

我一直都是不填写 app 来启动的,没遇过你的问题。还有你的权限那个处理,不能百分百处理的,后面我有个平台准备开源了,里面有处理方案你可以参考下,针对不同制造商的

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册