注意:
1、adb链接MuMu模拟器:adb connect 127.0.0.1:7555
2、adb链接夜神模拟器:adb connect 127.0.0.1:62001

webView测试

webview就是App内嵌的H5页面

官方文档:https://developer.android.com/reference/android/webkit/WebView
官方文档:https://developer.android.com/guide/webapps
官网文档:https://developer.android.com/guide/webapps/webview#java(向应用中添加 WebView)

要在 WebView 中加载网页,请使用 loadUrl()。例如:

    WebView myWebView = (WebView) findViewById(R.id.webview);myWebView.loadUrl("http://www.example.com");

模拟器上的测试(推荐使用MuMu模拟器)

  • webview控件会被映射为原生控件,类型为View,其中的文本内容会变成content-desc或者text
  • 6.0会把webview中的控件变成一个带有content-desc属性的View控件
  • 9.0会把webview中的控件变成一个带有text属性的View控件

MuMu模拟器上Android版本6.0.1


真机上Android版本9

真机

  • 如果app未开启webview的调试属性,是无法分析内部的控件的
  • 个别手机可能会默认打开此属性,所以默认也能访问到h5内部的控件
  • 如果还是访问不到,检查webview的调试属性是否开启,此时需要让研发配合打开webview的调试属性

例如:华为手机

webview测试用例

  • 不需要css定位:直接使用accessibility-id或者xpath定位就可以直接定位到
  • 需要css定位以及其他的js执行功能:contexts api
  • 注释:意思是如果用原生api可以定位到所有元素,就可以不用这里webview了,主要看手机或模拟器是否支持
#切换context
self.driver.switch_to.context(self.driver.contexts[1])

webview技术原理

webview能否被调试

# 查看所有开启的进程并过滤已开启的App
localhost:~ seveniruby$ adb shell cat /proc/net/unix | grep webview
0000008880000000: 00000002 00000000 00010000 0001 01 2545836 @webview_devtools_remote_32073
0000008880000000: 08000002 00000800 00010000 0001 01 9455057 @webview_devtools_remote_25324# 查看进程
adb shell ps 25324adb -s VED7N18403003958 forward tcp:7777 localabstract:webview_devtools_remote_32073
adb forward --list
curl http://127.0.0.1:7777/json/version

adb forward命令

 forward --list           列出所有正向套接字连接forward [--no-rebind] LOCAL REMOTEforward socket connection using:tcp:<port> (<local> may be "tcp:0" to pick any open port)localabstract:<unix domain socket name>localreserved:<unix domain socket name>localfilesystem:<unix domain socket name>dev:<character device name>jdwp:<process pid> (remote only)vsock:<CID>:<port> (remote only)acceptfd:<fd> (listen only)forward --remove LOCAL   删除特定的正向套接字连接forward --remove-all     删除所有正向套接字连接

真实操作案例:

注意:其实不用使用下面这种方法也可以实现调试
参考:https://blog.csdn.net/DDJ_TEST/article/details/120767305
参考:https://blog.csdn.net/DDJ_TEST/article/details/120760836

地址:chrome://inspect/#devices
真机

MuMu模拟器

开启需要的App内嵌的H5页面

C:\Users\shenyf>adb shell "cat /proc/net/unix | grep webview"
0000000000000000: 00000002 00000000 00010000 0001 01 90651 @webview_devtools_remote_8183C:\Users\shenyf>adb forward tcp:7777 localabstract:webview_devtools_remote_8183
7777C:\Users\shenyf>adb forward --list
emulator-5554 tcp:7777 localabstract:webview_devtools_remote_8183

地址:127.0.0.1:7777

使用chrome的devtools远程调试协议
官方文档:https://developer.chrome.com/docs/devtools/remote-debugging/webviews/

官方文档:https://developer.chrome.com/docs/devtools/remote-debugging/

官方文档:https://chromedevtools.github.io/devtools-protocol/
webview与浏览器的通讯,chrome可以控制webview

地址:http://127.0.0.1:7777/json/version

chrome remote debug
{"Android-Package": "com.bs.finance",
"Browser": "Chrome/69.0.3497.100",
"Protocol-Version": "1.3",
"User-Agent": "Mozilla/5.0 (Linux; Android 9; AOSP on IA Emulator Build/PSR1.180720.122; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/69.0.3497.100 Mobile Safari/537.36",
"V8-Version": "6.9.427.23",
"WebKit-Version": "537.36 (@8920e690dd011895672947112477d10d5c8afb09)",
"webSocketDebuggerUrl": "ws://127.0.0.1:7777/devtools/browser"
}

在App打开一个H5页面
http://127.0.0.1:7777/json/list

[{"description": "{\"attached\":true,\"empty\":false,\"height\":1890,\"screenX\":0,\"screenY\":258,\"visible\":true,\"width\":1080}","devtoolsFrontendUrl": "http://chrome-devtools-frontend.appspot.com/serve_rev/@8920e690dd011895672947112477d10d5c8afb09/inspector.html?ws=127.0.0.1:7777/devtools/page/1EA4D75CDFD3C8A56BCD73299017A9FB","id": "1EA4D75CDFD3C8A56BCD73299017A9FB","title": "","type": "page","url": "https://app-test1.bicai365.com/products/#/prdDoubleBuy?helpCenterCode=BC_GROUP_BUY&h5HandleRightItems=1&ID=2000001750&RATE_ID=731007623&hideOption=1&ORG_ID=999-2000001750&showRightShare=1&extendInfo=&entrySource=1&inviteId=27757&member_status=null","webSocketDebuggerUrl": "ws://127.0.0.1:7777/devtools/page/1EA4D75CDFD3C8A56BCD73299017A9FB"}
]


目前:Edge浏览器+MuMu模拟器,只能调试出H5页面,app原生掉不出来
注意:在这一步chrome浏览器出不来页面

微信小程序测试

Android webview测试原理相关推荐

  1. android webview测试

    多架构支持 纯webview 纯webview测试(只测试浏览器)的环境准备 手机端 被测浏览器:(不可以是第三方浏览器)safari for ios and chrome,chromium,or b ...

  2. Android测试原理(三)——使用Eclipse的ADT进行测试

    原文链接:http://developer.android.com/tools/testing/testing_eclipse.html 1.使用Eclipse的ADT进行测试 这次的主题介绍了怎么使 ...

  3. Android测试原理(二)

    2.3.  The Testing API(测试API) Android的测试API是基于JUnitAPI和扩展的instrumentation 框架以及特定的Android测试类.          ...

  4. Android测试原理概述(一)

    翻译来源:http://developer.android.com/tools/testing/testing_android.html 1.   Testing http://developer.a ...

  5. Android Webview历史高危漏洞与攻击面分析

    文章目录 前言 WebView基础 极简Demo程序 JS调用Android 加载远程HTML 接口攻击场景 漏洞示例程序 本地攻击程序 url白名单校验 代码执行漏洞 JAVA反射机制 历史漏洞PO ...

  6. 如何设计一个优雅健壮的Android WebView?(下

    nativeReady = false; var jsoncommand = JSON.stringify(command); var _temp = prompt(jsoncommand,''); ...

  7. android webview 字体 系统字体大小,【转】android webview设置内容的字体大小

    Enum for specifying the text size. SMALLEST is 50% SMALLER is 75% NORMAL is 100% LARGER is 150% LARG ...

  8. Android Webview 漏洞复现

    Android Webview 漏洞复现 前言 触发条件 漏洞原理 漏洞复现 1. 运行环境 2.1 webview介绍 2.2 漏洞核心代码 2.3 JS攻击核心代码 2.4 效果展示 总结 前言 ...

  9. Android 插件化原理学习 —— Hook 机制之动态代理

    前言 为了实现 App 的快速迭代更新,基于 H5 Hybrid 的解决方案有很多,由于 webview 本身的性能问题,也随之出现了很多基于 JS 引擎实现的原生渲染的方案,例如 React Nat ...

  10. Android Webview H5 秒开方案实现

    本文首发于微信公众号「玉刚说」 原文链接:Android Webview H5 秒开方案实现 前言 现在许多app都嵌入了H5页面, 然而WebView加载速度慢这个问题却一直影响着用户的体验, 所以 ...

最新文章

  1. HDU 2084 数塔 DP
  2. canva五角星空html,【Canvas】canva实例-星空、日出的效果
  3. rabbitmq 延迟队列_Delayed Message 插件实现 RabbitMQ 延迟队列
  4. Laravel核心解读--观察者模式
  5. 八年级信息技术认识计算机网络,初二信息技术课名称:认识计算机网络.doc
  6. python读取csv文件_Hello,Python!小鲸教你Python之文件读取
  7. spss方差分析_交叉设计及SPSS多因素方差分析
  8. Object常用方法
  9. php dsn port,PHP的InfluxDB客户端库使用
  10. C语言 实现学生管理系统(手把手教学)
  11. 火狐浏览器不弹出窗口_Firefox选项卡的Vista样式弹出窗口预览
  12. cesium绘制网格_Cesium (五) 栅格图层
  13. 现代Web发展趋势和前沿技术综述
  14. 获取指定文件夹下所有的同种类型文档的名字(Python)
  15. html直接使用marked.js解析marked文档
  16. antv G6 + react umi(vue,ng) 实现节点红点(badges)
  17. 【狂神说】MySQL笔记
  18. “数字炸弹“——练习Python基础知识的小游戏【文末源码地址】
  19. 数据中心机房建设有哪些关键问题要考虑?
  20. Star-Transformer

热门文章

  1. 关于uvm_mem model的使用
  2. TLF35584 SPI
  3. 8个免费下载无损歌曲的网站,值得收藏
  4. Codeforces 382B Number Busters(数论)
  5. 杂谈之非技术工作能力
  6. 基于ARM-Linux的点菜系统
  7. python3.5从零开始学pdf_Python 3.5从零开始学 (刘宇宙 著) 完整pdf扫描版[41MB]
  8. R语言信用风险回归模型中交互作用的分析及可视化
  9. 集合arrayList,HashMap,HashSet的几个小练习
  10. java如何导入葡萄酒数据集包,如何将具有三个级别的类转换为二进制'0',并在葡萄酒数据集的插入符号中使用glm...