android webview 技术原理

注意项:

  • content-desc属性,不同的手机系统解析出来的值不一样,所以不建议使用该属性定位解析。
  • 把webview页面映射到PC端,然后再对页面进行定位解析。

 

域套接字 概念:

  • unix系统进程与进程之间通讯的一种方式。
  • 客户端与服务端建立连接,需要有共同的套接字,和相应的服务端的端口号
  • 套接字会处于监听状态,来监听客户端发来的请求
    当客户端发来一个套接字请求,服务端套接字会对该请求进行响应,开启一个新的进程,告诉客户端已经链接成功。


启动appium,并收集log:appium -g logname.log |tee

 

webview工作过程:

  • appium服务获取到一个contexts请求
  • 调用appiumDriver.getContexts()方法
  • 获取到一个可用的webview列表
  • 运行一个shell命令:adb shell cat /proc/net/unix,获取到域套接字
  • 获取所有被测设备的 webview 进程:adb shell "cat /proc/net/unix |grep webview"
  • 查看进程的应用:adb shell "ps |grep 1136"
  • 启动chromedriver
    • Spawning chromedriver with: D:/BrowserDriver/chromedriver_win32_2.39/chromedriver.exe --url-base=wd/hub --port=8000 --adb-port=5037 --verbose
  • 转发请求,将appium server (定位元素)的请求转发给chromedriver:
     Proxying [POST /wd/hub/session/de7a181a-2a02-4bbb-9f39-6891e24cc45f/element] to [POST http://127.0.0.1:8000/wd/hub/session/7cdaf82f893212ef45da001d547961b1/element] with body: {"using":"id","value":"i_am_a_textbox"}
posted @ 2021-12-18 15:29  于慧妃  阅读(510)  评论(0编辑  收藏  举报