python+appium 混合app处理

1、打开app内webview调试模式

app代码里在WebView类中调用静态方法setWebContentsDebuggingEnabled:

webView.setWebContentsDebuggingEnabled(true);

2、打印出当前手机页面的context

print driver.contexts

如果包含有h5页面的话,一般至少会返回两个元素,一个'NATIVE_APP', 一个'WEBVIEW'

3、切换到H5页面

driver.switch_to.context('WEBVIEW')

driver.execute(MobileCommand.SWITCH_TO_CONTEXT, {"name": "WEBVIEW_com.app.qunadai"})

查看是否切换成功

print driver.current_context

接下来h5页面操作同web测试一样

4、切回原生app

driver.switch_to.context('NATIVE_APP')

5、Chrome调试Webview

无论是调试Web页面还是调试Hybrid混合应用,只要是调试Android的webview,都需要使用Chrome://inspect进行调试。但是国内开发者会出现404 Not Found错误,解决方法有两种:

  1. 最直接的方法:FQ。翻墙最大的问题免费的不稳定,按月收费又太浪费。
  2. 推荐使用离线开发者调试工具包(支持windows/mac/linux),再也不用到处找出口了

注意:

1、手机上的webview版本与appium中的chromedriver要对应,可以在手机上设置--应用--全部,找android system webview 这个,查看webview版本,然后找对应的chromedriver版本。

2、driver.contexts结果为WEBVIEW_undefined

只针对Android 6.0+的解决办法:
修改android-hybrid.js文件,在 pkg = line [pkgColumn]; 前面加上 pkgColumn = line.length - 1; 可以解决
路径:C:、Program Files (x86)\Appium\node_modules\appium\lib\devices\android\android-hybrid.js

产生问题的原因:
在Android 5.0中有9个字段在引导时,但在Android 6.0中有8字段在引导时:
Android 5.0
USER PID PPID VSIZE RSS WCHAN PC NAME
u0_a611 23802 188 1169748 133272 ffffffff 00000000 S com.XXX.XXX.XXX

Android 6.0
User PID PPID VSIZE RSS WCHAN PC NAME 
u0_a178 6346 211 1724936 123260 00000000 R com.XXX.XXX.XXX

但几秒钟后有9个字段
USER PID PPID VSIZE RSS WCHAN PC NAME 
u0_a182 10156 211 1721024 111224 sys_epoll_ 00000000 S com.XXX.XXX.XXX

sys_epoll_字段在几秒钟后才可见

所以,当我们尝试获取webview中9个字段但是只有8个时,我们就得到一个“undefined”

猜你喜欢

转载自blog.csdn.net/sinat_34209942/article/details/81131346
今日推荐