UI自动化测试-Webview

1. 启动Appium

2. 启动MuMu模拟器

  adb连接mumu:adb connect 127.0.0.1:7555


  • adb连接模拟器
  • 夜神模拟器:adb connect 127.0.0.1:62001
  • 逍遥安卓模拟器:adb connect 127.0.0.1:21503
  • 天天模拟器:adb connect 127.0.0.1:6555 
  • 海马玩模拟器:adb connect 127.0.0.1:53001
  • 网易MUMU模拟器:adb connect 127.0.0.1:7555 MacOS:adb connect 127.0.0.1:5555
  • 雷电模拟器:adb connect 127.0.0.1:5555 
  • genymotion模拟器:adb connect 127.0.0.1:5555 
  • 谷歌原生模拟器:adb connect <设备的IP地址>:5555

  adb连接夜神模拟器发现连不上,进入到夜神模拟器安装目录,进入到bin,用nox_adb 连接:
  

3. Webview官方文档

什么是Webview:App端一个内嵌的浏览器,嵌入html代码或其他,如下示例:

WebView myWebView = (WebView) findViewById(R.id.webview);
myWebView.loadUrl("http://www.example.com");

4. app中确认当前页面是不是webview的方式

  appium元素定位,查看到标签 android.webkit.WebView

    WebView中的元素有accessibility_id的属性,文本为content-desc

    

5. 模拟器上的测试

  • webview控件会被映射为原生控件,类型为View,其中的文本内容会变成content-desc或者text
  • 6.0会把webview中的控件变成一个带有content-desc属性的View控件
  • 9.0会把webview中的控件变成一个带有text属性的View控件

6. 真机

  • 如果app未开启webview的调试属性,是无法分析内部的控件的
  • 个别手机可能会默认打开此属性,所以默认也能访问到h5内部的控件
  • 如果还是访问不到,检查webview的调试属性是否开启,此时需要让研发配合打开webview的调试属性

7. 技术原理

localhost:~ seveniruby$ adb shell cat /proc/net/unix | grep webview
0000000000000000: 00000002 00000000 00010000 0001 01 2545836 @webview_devtools_remote_32073
0000000000000000: 00000002 00000000 00010000 0001 01 9455057 @webview_devtools_remote_25324

adb -s VED7N18403003958 forward tcp:7777 localabstract:webview_devtools_remote_32073
adb forward --list
curl http://127.0.0.1:7777/json/version

 Webview原理

inspector  :  chrome://inspect/#devices

chrome 62版本调试Webview:

 

原文地址:https://www.cnblogs.com/SomnusWho/p/13925463.html