Android webview测试原理

注意:
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 25324

adb -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 REMOTE
     forward 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_8183

C:\Users\shenyf>adb forward tcp:7777 localabstract:webview_devtools_remote_8183
7777

C:\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浏览器出不来页面
在这里插入图片描述

微信小程序测试

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值