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”

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值