热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Androidwebview测试原理

注意:1、adb链接MuMu模拟器:adbconnect127.0.0.1:75552、adb链接夜神模拟器:adbconnect127.

注意:
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 删除所有正向套接字连接

真实操作案例&#xff1a;

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

地址&#xff1a;chrome://inspect/#devices
真机
在这里插入图片描述

MuMu模拟器
在这里插入图片描述
开启需要的App内嵌的H5页面

C:\Users\shenyf>adb shell "cat /proc/net/unix | grep webview"
0000000000000000: 00000002 00000000 00010000 0001 01 90651 &#64;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

地址&#xff1a;127.0.0.1:7777
在这里插入图片描述
使用chrome的devtools远程调试协议
官方文档&#xff1a;https://developer.chrome.com/docs/devtools/remote-debugging/webviews/
在这里插入图片描述

官方文档&#xff1a;https://developer.chrome.com/docs/devtools/remote-debugging/
在这里插入图片描述

官方文档&#xff1a;https://chromedevtools.github.io/devtools-protocol/
webview与浏览器的通讯&#xff0c;chrome可以控制webview
在这里插入图片描述

地址&#xff1a;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 (&#64;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/&#64;8920e690dd011895672947112477d10d5c8afb09/inspector.html?ws&#61;127.0.0.1:7777/devtools/page/1EA4D75CDFD3C8A56BCD73299017A9FB","id": "1EA4D75CDFD3C8A56BCD73299017A9FB","title": "","type": "page","url": "https://app-test1.bicai365.com/products/#/prdDoubleBuy?helpCenterCode&#61;BC_GROUP_BUY&h5HandleRightItems&#61;1&ID&#61;2000001750&RATE_ID&#61;731007623&hideOption&#61;1&ORG_ID&#61;999-2000001750&showRightShare&#61;1&extendInfo&#61;&entrySource&#61;1&inviteId&#61;27757&member_status&#61;null","webSocketDebuggerUrl": "ws://127.0.0.1:7777/devtools/page/1EA4D75CDFD3C8A56BCD73299017A9FB"}
]

在这里插入图片描述
目前&#xff1a;Edge浏览器&#43;MuMu模拟器&#xff0c;只能调试出H5页面&#xff0c;app原生掉不出来
注意&#xff1a;在这一步chrome浏览器出不来页面
在这里插入图片描述


微信小程序测试


推荐阅读
  • ASP.NET Core WebAPI 开发新建WebAPI项目  转
    转 http:www.cnblogs.comlinezerop5497472.htmlASP.NETCoreWebAPI开发-新建WebAPI项目ASP.NETCoreWebAPI ... [详细]
  • rtemsapi用户指南Elixir代表了相对较新的编程语言,面向更广泛的受众。它于2011年发布,此后一直在开发中。他的主要特征是取消功能范式 ... [详细]
  • NickLa制作了另伟大的教程。NickLa向我们展示了如何装饰,而无需编辑源图像的图像和照片画廊。诀窍是很简单。所有你需要的是一个额外的标签和应用背景图像创建的叠加 ... [详细]
  • 软件自动化测试的学习路线
    软件自动化测试的学习步骤软件测试交流群关注软件测试技术公众号获取阅读目录软件自动化测试的学习步骤自动化测试的本质自动化测试学习的误区自动化测试的职位自动化测试分类Web自动化 ... [详细]
  • Linux下安装grafana并且添加influxdb监控的方法
    这篇文章主要介绍了Linux下安装grafana并且添加influxdb监控的方法,本文给大家介绍的非常详细,具有一定的参考借鉴价值, ... [详细]
  • Webmin远程命令执行漏洞复现及防护方法
    本文介绍了Webmin远程命令执行漏洞CVE-2019-15107的漏洞详情和复现方法,同时提供了防护方法。漏洞存在于Webmin的找回密码页面中,攻击者无需权限即可注入命令并执行任意系统命令。文章还提供了相关参考链接和搭建靶场的步骤。此外,还指出了参考链接中的数据包不准确的问题,并解释了漏洞触发的条件。最后,给出了防护方法以避免受到该漏洞的攻击。 ... [详细]
  • Whatsthedifferencebetweento_aandto_ary?to_a和to_ary有什么区别? ... [详细]
  • nsitionalENhttp:www.w3.orgTRxhtml1DTDxhtml1-transitional.dtd ... [详细]
  • HTTP请求响应的步骤第一步:第二步:第三步:第四步:第五步第一步:1.客户端连接到Web服务器⼀个HTTP ... [详细]
  • ajax 跨域webapi 最简单的demo(只介绍Get)
    这几天遇到一个nodejs的项目,使用VSCode开发,需要连接数据库的,但是用nodejs连接数据库比较繁琐,需要安装很多 ... [详细]
  • Linux     系统安装
    Linux系统安装linux系统安装准备工作电脑、u盘、光盘、网络、硬盘主要使用光盘、网络虚拟化软件vmwarevi ... [详细]
  • Shiro 简单了解
    Shiro简单了解简单用过SpringSecurity安全框架后,再试试另一个安全框架——Shiro。1.Shiro简介ApacheShiro是一个强大且易用的Java安全框架:S ... [详细]
  • github:https:github.comfroghuiyolandaIO模型和多线程模型实现多线程设计的几个考虑在我们的设计中,mainre ... [详细]
  • Linux是一套免费使用和***传播的类UNIX操作系统,主要用于基于Intel x86系列CPU的计算机上。Linux系统是由全世界各地的成千上万的程序员合适的方式定制自己的Li ... [详细]
  • Linux下安装免费杀毒软件ClamAV及使用方法
    本文介绍了在Linux系统下安装免费杀毒软件ClamAV的方法,并提供了使用该软件更新病毒库和进行病毒扫描的指令参数。同时还提供了官方安装文档和下载地址。 ... [详细]
author-avatar
爱辰teg_911
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有