干货|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
。郑州看白癜风哪家医院好太原看牛皮癣哪家医院专业
呼和浩特肛肠医院排名
死精症医院有哪些
苏州白癜风治疗费用多少钱
石家庄妇科医院
长期新冠后遗症
小便困难
整形唇部
中医词霸
-
年内仅有罚单!牛散控制71个账户操纵4股,5个月暴赚2.2亿,还辩称"文化程度不高"求减轻处罚
或者减低行政重罚的情形。我会在行政重罚事前告诉他时已充分考虑实证不当事实、该人认知恶性和适时以往等主实证因素,量罚必需。美国上市公司股票交易委员会对该人的说明了申辩意见未采纳。美国上市公司股票
2025-10-23 00:16:45
-
新加坡大满贯混双首轮战王楚钦/孙颖莎组合赢取进入下一轮
王楚钦孙颖莎重新组合,在没多久落幕的混合双打第二场赛中,战仗了埃及重新组合~梅谢蕾与澳巴尔重新组合,卫冕冠军下一轮,半决赛是3比0,第三局的半决赛是12比10仗。莎莎,这次比赛又
2025-10-23 00:16:45
-
26岁摄影博主鹿道森离世:“负面提问引诱”正在毁掉我们的孩子
家埃里斯的论述忽视:人天生不具抹杀现实的倾向,造成关键问题的不是血案本身,而是人们对血案的辨别和解释;人也能接受综性,彻底改变自己的不合综思录和自我失败不道德。鹿道森的自述我能够认真看,但是我想要不外
2025-10-23 00:16:45
-
谁说只有地方官勾心斗角——看《猎狼者》有感
更长视频上推荐的一个剧集,买来创会看完了,确实极好!直至以为照片上的这个人姓尹,看演员阵容才究竟这个告状就是秦昊······原本看宫斗剧和官场畅销小说,以为只有银银两才须要勾心斗角,看这个剧集才
2025-10-23 00:16:45
-
宁德时代、贵州茅台被大举减持,四季度最受公募基金青睐的首推是它
经理赵诣在的子公司注资日本公司农银新材料隐喻混合注资日本公司的五季报中直白地对此,部分新材料产业化日本公司的股价“已经跑步在了基本面下面”。对于光伏隐没,赵诣对此:“上游硅料价格比开始出
2025-10-23 00:16:45