初识Webview

原生APP是将页面的布局设计,以及业务代码打包然后用户下载安装使用,而webview是通过加载html文件来进行页面的展示,当需要更新页面布局的或者业务逻辑变更时,如果是原生的APP就需要修改前端内容,升级打包,重新发布才可以使用最新的。

而通过webview方式的页面则只需要修改html代码或者js文件(如果是从服务器端获取,只要新的文件部署完成),用户重新刷新就可以使用更新后的,无需通过下载安装的方式完成升级

坑:
  • chrome从62版本开始引入了css标签解析的bug,导致无法很好的去inspect web页面
  • chrome://inspect需要翻x 需要下载62版本的chrome
webview的调试

模拟器默认开启webview的debug开关。网易mumu模拟器除外

chromedriver相关的配置
  • chromedriverUseSystemExecutable=true 默认使用/usr/local/lib/node_modules/appium/node_modules/_appium-chromedriver@4.14.0@appium-chromedriver/chromedriver/mac/chromedriver
  • chromedriverExecutableDir指向chromedriver的存放目录,目前不生效
  • chromedriverExecutable执行chromedriver的绝对路径
Webview的识别原理
  • appium 会启动 chromedriver /Users/seveniruby/projects/chromedriver/2.20/chromedriver --url-base=wd/hub --port=8000 --adb-port=5037 --verbose
  • app 或者浏览器,底层使用的是 android 的 webview 组件,webview 组件有一个 debug 特性,可以在启动的时候,写入一个 domain socket 记录, webview_devtools_remote_3548
  • adb -P 5037 -s emulator-5554 shell cat /proc/net/unix 找到对应的webview调试入口
  • adb forward tcp:KaTeX parse error: Expected group after '_' at position 43: …devtools_remote_̲pid
  • curl http://localhost:7770/json/version
  • curl http://localhost:7770/json
自动寻找webview并分析
list_webview ()
{
    port=$1;
    adb shell cat /proc/net/unix | grep -a webview | awk -F_ '{print $NF}' | tr -d '\r' | while read pid; do
        port=$((port+=1));
        adb forward tcp:$port localabstract:webview_devtools_remote_$pid;
        curl http://localhost:$port/json/version;
        curl http://localhost:$port/json;
    done
}
list_webview 7770

真机为了提高性能,默认不开启webview的debug属性,需要研发在webview的组件上调用debug开关
https://developers.google.com/web/tools/chrome-devtools/remote-debugging/webviews?hl=zh-cn

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值