切换混合应用,不响应 swipe 滑动操作

呐。。。最近遇到问题了 ,需要使用混合应用 发现网址齐全的解决方式好少啊。。

整理了下 希望能有帮助!!!!

先讲讲如何切换到 webview 吧

1:获取应用的 context

print self.driver.contexts
[u'NATIVE_APP']

打印出来的 context 只是包含了 NATIVE_APP,并没有网上很多人说的包含了 WEB_VIEW 的 context。

For a real device you need to have setWebContentsDebuggingEnabled in the web view. Without it the web view is not exposed to automation tools

测试 webview 的话,需要获取 web 权限
被测试应用代码初始化中增加如下代码:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { 
    WebView.setWebContentsDebuggingEnabled(true);
    }

再次打印就可以看到 webview 名称了

print self.driver.contexts
[u'NATIVE_APP', u'WEBVIEW_com.yonglibao.android.debug']

2. 切换为 webview

方式一:使用 appium 提供的 api

self.driver.switch_to.context(self.driver.contexts[-1])

方式二:直接执行

self.driver.execute(MobileCommand.SWITCH_TO_CONTEXT, {"name": self.driver.contexts[-1]})

遇到的坑

开启 “指针位置” 后,使用 swipe 操作滑动,可以看到滑动痕迹,却没有实际产生滑动操作,如下:

os.popen('adb shell input swipe 800 800 800 100')

其实可以通过 xpath 全盘解析,不需要滑动


↙↙↙阅读原文可查看相关链接,并与作者交流