Appium appiumDriver 如何切换到目前已经打开的 app 页面?脚本调试时需要用到此功能

金圣勋 · 2016年10月22日 · 最后由 Mayo 回复于 2019年05月19日 · 5396 次阅读

目前用 appium 搭建自己的测试框架,想增加调试模式,需要 appium 自动切换到目前已经打开的 app 页面,从这个页面开始继续执行脚本,具体操作如下:
1、手动打开 app,通过手动操作移动到目标页面
2、启动 appium,并切换到上面的目标页面
3、appium 从这个页面开始执行脚本
目前试过很多方法都没有找到解决方案,appium 执行时都是重新启动 app,调用 appium.startActivity 也是重新启动 app 再切换,都只能从 app 第一个页面开始执行脚本。web 浏览器测试时可以通过 webdriver.switchTo().window() 切换到其他窗口,但 appium 好像没有这种功能,请问大家有没有好的解决方案啊?

共收到 11 条回复 时间 点赞
匿名 #1 · 2016年10月23日

据我所知,APPium 是会话模式,所有的 Session 都要从 MainActivity 中创建。所以实现不了

启动 appium ,appium 打开程序,等待手动操作完成,开始执行自动化

结合 severlet 写一个接口

将 DriverseSsion 保存在内存中
当接口访问的时候只要判断 driver 是否为空 不为空即可引用
前提是要把 session 过期时间调长

#2 楼 @dongdong ,这个方法不错,让脚本等待到目标页面再执行

adb shell am start -S / 给你推荐一下这个命令,我之前用过,可以调起后台的应用

appium 的参数你看看, 是支持直接启动某个页面的, 填写 appPackage 和 APPActivy 即可直接跳到特定的页面.

#6 楼 @seveniruby ,你是说 capabilities.setCapability()这个参数设置是吗?所有参数都看过,没有直接启动特定页面相关的参数,APPActivy 只能设定 launchableActivity。

#5 楼 @autotester ,执行 adb shell am start -S /这个命令,效果跟 driver.startActivity() 相同,都是从 app 的主页面开始进入,无法直接切换到中间页面

看来目前最简单的方式还是 2 楼提的建议,先打开 appium->设定等待操作->手动操作进入目标页面->执行脚本。谢谢大家指点。

#9 楼 @jinshengxun 早期 appium 是支持的 我用过 后来被他们做的没有这个特性了

为什么不模拟菜单按键再打开 app?

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