作者:爱辰teg_911 | 来源:互联网 | 2023-08-06 07:41
注意: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了,主要看手机或模拟器是否支持
self.driver.switch_to.context(self.driver.contexts[1])
webview技术原理
webview能否被调试
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浏览器出不来页面
微信小程序测试