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

神奇的小新 · 2016年12月26日 · 最后由 神奇的小新 回复于 2016年12月29日 · 1472 次阅读

切换混合应用,不响应 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 全盘解析,不需要滑动

共收到 2 条回复 时间 点赞

可以通过 xpath 找到整个页面的元素 ,所以不需要滑动了,我猜测不响应滑动可能是 web 控件,需要滚动。。。类似于这种:driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")

确定你是向上滑动,如果 swipe 代码没有报错;就是你坐标的值需要调整;

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