线上班第六期_IOS 进阶 Webview 测试_20180603

WebdriverAgent补充

下载

git clone https://github.com/facebook/WebDriverAgent

安装依赖

Cd WebDriverAgent && ./Scripts/bootstrap.sh

配置运行

  • Xcode, 设置webdriverAgentLib签名;
  • 设置WebDriverAgentRunner签名,并修改bundleId, 不修改的话签名不会通过;
  • 选择需要运行的内容 Product → Scheme → WebdriverAgentRunner
  • USB连接设备(或启动模拟器),Xcode中选择设备
  • 编译安装 Product → Test
  • 确认手机中的WebdriverAgentRunner已经安装上(手机第一次安装的话需要到设备管理中对你的AppleID进行授信)
  • 打开Xcode的日志输出,View → DebugArea → Activate Console
  • 查看输出目录中的wda server链接: 0.0.0.0:8100
  • 将链接复制出来粘贴到浏览器中,http://0.0.0.0:8100/status,如果有数据,说明wda启动是成功的;
  • 可能会遇到的问题:
  • 1、地址无法访问,则需要对8100端口进行映射

IWDP

安装

brew install libimobiledevice  (必须,已安装过可略过)
brew install ios-webkit-debug-proxy

设置真机

设置->safari->高级->web inspector(检查器)打开

开启代理

Ios_webkit_debug_proxy –c ${uuid}:${port} –d ()

查看

使用浏览器打开localhost:${port}即可查看
Api: http://localhost:9222/json

搭配chrome devtools进行调试

  • 命令行执行:ios_webkit_debug_proxy -f chrome-devtools://devtools/bundled/inspector.html;
  • 打开chrome浏览器,输入chrome://inspect;
  • 在device标签页下,打开Discover network targets选项,即可看到iOS真机上的webview,可对其进行调试;

remotedebug-ios-webkit-adapter

安装
npm install remotedebug-ios-webkit-adapter –g
启动
remotedebug_ios_webkit_adapter --port=9988
使用chrome远程调试页面
电脑用chrome打开chrome://inspect,即可远程调试,可以使用chrome来抓取页面元素;

Appium Desired_caps

desired_caps = {
  “platformName”: “iOS”,
  “deviceName”: “iPhone”,
  “bundleId”: ”xxxx“,
  ”automationName“: ”XCUITest“,
  ”usePrebuiltWDA“: True,
  ”startIWDP“: True,     # 必须!
  "udid": ”xxxxxxx"
}

手势操作

由于XCUITest框架不支持TouchAction以及一些W3C标准的手势操作,所以在iOS的自动化中,要进行手势操作的话,必须使用JS.excute的方式执行;
Example:
Scroll in python:

# Python driver.execute_script('mobile: scroll', {'direction': 'down'}); 
dragFromToForDuration in Java
Java JavascriptExecutor js = (JavascriptExecutor) driver; 
Map<String, Object> params = new HashMap<>(); 
params.put("duration", 1.0); 
params.put("fromX", 100); 
params.put("fromY", 100); 
params.put("toX", 200); 
params.put("toY", 200); 
params.put("element", ((RemoteWebElement) element).getId()); js.executeScript("mobile: dragFromToForDuration", params); 

作业

基于UICATELOG App,把里面的webview代码走通,然后改造代码,让Webview打开百度,并搜索Testerhome,确认搜索成功后结束。