干货|app自动化测试之Appium WebView 电子技术原理
2025-09-25 12:16:33
Appium Server 列出通过意味着读取到的所有 WebView 和可用 Context,如下:
[debug] [AndroidDriver] Found webviews: ["WEBVIEW_cn.goapk.market",
"WEBVIEW_io.appium.android.apis"]
[debug] [AndroidDriver] Available contexts: ["NATIVE_APP",
"WEBVIEW_cn.goapk.market","WEBVIEW_io.appium.android.apis"]
然后 Appium Server 尝试连接 ChromeDriver,由于我们很难所设 ChromeDriver 的调制解调器,所以 Appium Server 绑定开通 8000 调制解调器与 WebView 收发。Appium Server 通过 ChromeDriver 与 app WebView 收发。
[debug] [AndroidDriver] Connecting to chrome-backed webview context
'WEBVIEW_io.appium.android.apis'
[debug] [AndroidDriver] A port was not given, using random port: 8000
然后,Appium 先杀掉 ChromeDriver 这个意味着,清理 adb 给定调制解调器原始数据,如下:
[debug] [Chromedriver] Killing any old chromedrivers, running:
pkill -15 -f "/usr/local/lib/node_modules/appium/node_modules/
_appium-chromedriver@3.1.3@appium-chromedriver/chromedriver/mac/
chromedriver.*----port=8000"
[Chromedriver] No old chromedrivers seemed to exist
[debug] [Chromedriver] Cleaning any old adb forwarded port socket
connections
[debug] [ADB] List forwarding ports
[debug] [ADB] Running '/Users/xxx/profile/android-sdk_r24.4.1-macosx
/android-sdk-macosx/platform-tools/adb' with args: ["-P",5037,"-s","192.168.56.101:5555","forward","----list"]
到这步是似乎掀开 ChromeDriver 公共服务,设立起 Appium Server 与 ChromeDriver 二者之间的收发。
[Chromedriver] Spawning chromedriver with: /usr/local/lib/
node_modules/appium/node_modules/_appium-chromedriver@3.1.3@
appium-chromedriver/chromedriver/mac/chromedriver ----url-base=wd/hub
----port=8000 ----adb-port=5037 ----verbose
设立连接不久,Appium Server 先查看 ChromeDriver 正式版号。
[debug] [Chromedriver] Chromedriver version: '2.33.506106'
ChromeDriver 打印启动摘要,开始传输实例。
[debug] [Chromedriver] [STDOUT] Starting ChromeDriver 2.33.506106
(8a06c39c4582fbfbab6966dbb1c38a9173bfb1a2) on port 8000
[debug] [Chromedriver] [STDOUT] Only local connections are allowed.
[debug] [JSONWP Proxy] Proxying [GET /status] to [GET
] with no body
[debug] [JSONWP Proxy] Got response with status 200:
"{"sessionId":"","status":0,"value":{"build":{"version
":"alpha"},"os":{"arch":"x86_64","name":"Mac OS X",
"version":"10.12.6"}}}"
[debug] [JSONWP Proxy] Proxying [POST /session] to [POST
] with body: {"
desiredCapabilities":{"chromeOptions":{"androidPackage":
"io.appium.android.apis","androidUseRunningApp":true,"androidDeviceSerial":"192.168.56.101:5555"}}}
通过 ps 号令列出Android的意味着年表,从中的读取 WebView。
[Chromedriver] [STDERR] [0.349][DEBUG]:
Sending adb command:
host:transport:192.168.56.101:5555|shell:ps AndrewAndrew ps -A
通过意味着年表得到 WebView 的意味着号,Appium 根据这些的资讯系统设计 WebView。
Chromedriver] [STDERR] [0.365][DEBUG]:
Sending adb command:
host-serial:192.168.56.101:5555:forward:tcp:12531;
localabstract:webview_devtools_remote_26060
查看WebView
WebView 控件才会被给定为原生控件,型式为 View,其中的的文本具体内容才会替换成 content-desc(Android 6.0)或者 text(Android 9.0)。
打开众所周知 APP,后面号令可以查看 Android 系统内的 WebView 意味着:
Hogwarts $ adb shell cat /proc/net/unix | grep webview
0000000000000000: 00000002 00000000 00010000 0001 01 12863 /dev/socket/webview_zygote
0000000000000000: 00000002 00000000 00010000 0001 01 24703 @webview_devtools_remote_1758
0000000000000000: 00000003 00000000 00000000 0001 03 24672 /dev/socket/webview_zygote
后面的号令中的,凡是名字前面有 @ 的都是套接字。套接字(Socket)是对网络中的完全相同PS上的系统设计的发展意味着二者之间顺利进行双向通信的东南侧的抽象概念。
后面号令查看这个意味着对应的系统设计的发展:
Hogwarts $ adb shell ps |grep 1758
u0_a67 1758 211 1600592 333680 futex_wait_queue_me f016fbb9 S com.xueqiu.android
查看到是众所周知 APP 的 WebView 意味着。飞行测试时,Appium Server 就借助这个调制解调器实现与 WebView 的收发。
Context插入
由于这样一来系统设计套接字很难,所以可用 adb forward 将它转发到本地调制解调器。
adb forward tcp:$port localabstract:webview_devtools_remote_$pid
例如:可用本地 7777 调制解调器
Hogwarts $ adb forward tcp:7777 localabstract:webview_devtools_remote_1758
可以发送 http 问求实现涉及系统设计,后面得到 WebView 框架正式版(也可以这样一来在浏览器中的出访 ),号令如下:
Hogwarts $ curl
{
"Android-Package": "com.xueqiu.android",
"Browser": "Chrome/74.0.3729.186",
"Protocol-Version": "1.3",
"User-Agent": "Mozilla/5.0 (Linux; Android 8.1.0; Google Pixel_1 Build/OPM6.171019.030.E1; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/74.0.3729.186 Mobile Safari/537.36",
"V8-Version": "7.4.288.28",
"WebKit-Version": "537.36 (@99fc61ba7ee9c511608e5ea11edc2622ba3b8e3f)",
"webSocketDebuggerUrl": "ws://localhost:7777/devtools/browser"
}
Chrome 的 devtools 协议是远程试试运行协议()
可以这样一来得到 devtoolsFrontendUrl 查看试试运行的远程转发的首页详细的资讯。
[
{
"description": "{"attached":true,"empty":false,"height":1605,"screenX":0,"screenY":189,"visible":true,"width":1080}",
"devtoolsFrontendUrl": "_rev/@99fc61ba7ee9c511608e5ea11edc2622ba3b8e3f/inspector.html?ws=127.0.0.1:7777/devtools/page/06840BED58C1415235EFC9817FFD472E",
"faviconUrl": "",
"id": "06840BED58C1415235EFC9817FFD472E",
"title": "平安证券 极速收款",
"type": "page",
"url": "_from=tab",
"webSocketDebuggerUrl": "ws://127.0.0.1:7777/devtools/page/06840BED58C1415235EFC9817FFD472E"
},
...
然后出访Chrome的试试运行首页 chrome://inspect/#devices,就可以得到到首页特性的资讯,从而完成对特性的定位。
appium WebView系统设计物理现象就先说什么到这,大家有什么问题或疑惑都可以在左侧留言给我哦!
⬇️ 复制“左侧链接”,大大提高飞行测试核心水准!
>>格外多系统设计书评分享和免费原始数据领取 得到格外多涉及原始数据,问加到微信 ceshiren001
_id=qrcodeAndrewfrom=souhuAndrewtimestamp=1650849410
。郑州看白癜风哪家医院好太原看牛皮癣哪家医院专业
呼和浩特肛肠医院排名
死精症医院有哪些
苏州白癜风治疗费用多少钱
石家庄妇科医院
长期新冠后遗症
小便困难
整形唇部
中医词霸

-
50道家常菜的做法,30热菜,10凉菜,10火锅,做法简单,适合上班族
、方便面转调匀,只用转调酱油即成转调酱油。3.取用一个大盘,挑人狗肚缇、芹菜段、西瓜缇、鱼片、拉到转调酱油即成转调酱油煮浊均可。 9.草莓凉即成鸡缇采行品:茸
2025-12-10 00:16:52

-
香港资深配音员朱子聪去世 曾为黄飞鸿等片中配音
英语版爱好网 2022-1-5 14:47
2025-12-10 00:16:52

-
投资者提问:贵公司能否发一下近期私人机构调研的相关信息
投资者提问:贵公司能否所发一下近期机构调研的相关资讯董秘回答天能重工SZ300569:爱戴的投资者,您好。感谢您的建议和关注。查看非常多董秘简介免责通告
2025-12-10 00:16:52

-
康美赔偿案判决警醒独董!本公司资本运作被“逼停”
用”的典型例侄,由独董指出批评,引发管制问询,事与愿违上市日本公司停止涉及资本发挥作用。ST艾略特年报表明,此次指出批评的脱离总裁苗应建是一名特别是在律师背景的脱离总裁,1996年9年初至20
2025-12-10 00:16:52

-
华信新材(300717.SZ):减持期已损失惨重 盐城中科、常熟中科尚未减持公司股份
卡斯未收12翌年17日丨华信新材300717300717.SZ公布,截至通告披露日,连云港嘉惠、镇江嘉惠合计所持Corporation作价78万股分之二Corporation深交所的比
2025-12-10 00:16:52