前面我们已经安装好了WebdriverAgent, 现在可以用Facebook官方提供的API来进行一些操作

WDA API官方页面:

https://github.com/facebook/WebDriverAgent/wiki/Queries

如果在终端运行的话可以使用curl来调用API,需要搭配json_header +  device_url + api组成,其中

json_header一般是: "Content-Type: application/json"

device_url一般是: http://localhost:8100/*

下面我们试试调用这些API

  1. 功能: 查询可服务状态(Checking Service Status)
  2.  
  3. API: curl -X GET $JSON_HEADER $DEVICE_URL/status

使用示范:

  1. Jackeys-MacBook-Pro:~ jackey$ curl -X GET -H "Content-Type: application/json" -d "" http://localhost:8100/status
  2. {
  3. "value" : {
  4. "state" : "success",
  5. "os" : {
  6. "name" : "iOS",
  7. "version" : "11.2.1"
  8. },
  9. "ios" : {
  10. "simulatorVersion" : "11.2.1",
  11. "ip" : "192.168.1.5"
  12. },
  13. "build" : {
  14. "time" : "Dec 25 2018 11:48:43"
  15. }
  16. },
  17. "sessionId" : "FB941AE9-551D-437E-A376-191DDDB354FB",
  18. "status" :
  19. }Jackeys-MacBook-Pro:~ jackey$
  1. 功能:打开会话并开启APP(Session handling)
  2.  
  3. API: curl -X POST $JSON_HEADER -d "{\"desiredCapabilities\":{\"bundleId\":\"com.apple.mobilesafari\"}}" $DEVICE_URL/session

使用示范:

  1. Jackeys-MacBook-Pro:~ jackey$ curl -XPOST -H "Content-Type: application/json" -d "{\"desiredCapabilities\":{\"bundleId\":\"NOVA.ProductDemo\"}}" http://localhost:8100/session
  2. {
  3. "value" : {
  4. "sessionId" : "C7844276-1CB0-4165-9621-65B9B1E10E64",
  5. "capabilities" : {
  6. "device" : "iphone",
  7. "browserName" : "ProductDemo",
  8. "sdkVersion" : "11.2.1",
  9. "CFBundleIdentifier" : "NOVA.ProductDemo"
  10. }
  11. },
  12. "sessionId" : "C7844276-1CB0-4165-9621-65B9B1E10E64",
  13. "status" :
  14. }Jackeys-MacBook-Pro:~ jackey$
  1. 功能:查询当前会话(Querying current session)
  2.  
  3. API: curl -X GET $JSON_HEADER $DEVICE_URL/session/$SESSION_ID

使用示范:

  1. Jackeys-MacBook-Pro:~ jackey$ curl -X GET -H "Content-Type: application/json" -d "" http://localhost:800/session/C7844276-1CB0-4165-9621-65B9B1E10E64
  2. {
  3. "value" : {
  4. "sessionId" : "C7844276-1CB0-4165-9621-65B9B1E10E64",
  5. "capabilities" : {
  6. "device" : "iphone",
  7. "browserName" : "ProductDemo",
  8. "sdkVersion" : "11.2.1",
  9. "CFBundleIdentifier" : "NOVA.ProductDemo"
  10. }
  11. },
  12. "sessionId" : "C7844276-1CB0-4165-9621-65B9B1E10E64",
  13. "status" :
  14. }Jackeys-MacBook-Pro:~ jackey$
  1. 功能:关闭会话并关闭程序(Removing session and kill application)
  2.  
  3. API: curl -X DELETE $JSON_HEADER $DEVICE_URL/session/$SESSION_ID

使用范例:

  1. Jackeys-MacBook-Pro:~ jackey$ curl -X DELETE -H "Content-Type: application/json" -d "" http://localhos:8100/session/C7844276-1CB0-4165-9621-65B9B1E10E64
  2. {
  3. "value" : {
  4.  
  5. },
  6. "sessionId" : "406A1A5B-0164-4DA2-BFD9-051155F8B4B2",
  7. "status" :
  8. }Jackeys-MacBook-Pro:~ jackey$
  1. 功能:打开inspector
  2.  
  3. API: $DEVICE_URL/inspector

使用范例:

  1. http://localhost:8100/inspector
  1. 功能:返回home screen
  2.  
  3. API: curl -X POST $JSON_HEADER -d "" $DEVICE_URL/wda/homescreen

使用范例:

  1. Jackeys-MacBook-Pro:~ jackey$ curl -X POST -H "Content-Type: application/json" -d“” http://localhost:8100/wda/homescreen
  2. {
  3. "value" : "Error Domain=com.facebook.WebDriverAgent Code=1 \"Timeout waiting until SpringBoard is visible\" UserInfo={NSLocalizedDescription=Timeout waiting until SpringBoard is visible}",
  4. "sessionId" : "967066CF-E504-4DAA-B18D-86A0EF0AD53A",
  5. "status" :
  6. }Jackeys-MacBook-Pro:~ jackey$
  1. 功能:指定时间后退出app
  2.  
  3. API: curl -X POST $JSON_HEADER -d "{\"duration\":3}" $DEVICE_URL/session/$SESSION_ID/wda/deactivateApp

更多参考:https://github.com/facebook/WebDriverAgent/wiki/Queries

iOS自动化探索(二)WDA API的使用的更多相关文章

  1. iOS自动化探索(三)WebDriverAgent Python Client

    之前我们在终端试着调用过WDA API, 今天我们在看一个Python封装的api库 https://github.com/openatx/facebook-wda 安装方式(一): pip inst ...

  2. 【Mac + Python3.6 + ATX基于facebook-wda】之IOS自动化(二):安装facebook-wda库并编写简易自动化测试脚本

    上一篇介绍完如何安装WDA,接下来开始正式安装开发库并编写自动化脚本. 目录: 一.安装facebook-wda库 二.通过WEditor定位元素 三.附录:学习资料 一.安装facebook-wda ...

  3. iOS自动化探索(一)WebDriverAgent安装

    WebDriverAgent FaceBook推出的一款iOS移动测试框架, 支持真机和模拟器, 同时支持USB, 官方是这样介绍的: https://github.com/facebook/WebD ...

  4. iOS自动化探索(十)代码覆盖率统计

    iOS APP代码覆盖率统计 今年Q3季度领导给加了个任务要做前后端代码覆盖率统计, 鉴于对iOS代码代码比较熟就选择先从iOS端入手,折腾一整天后终于初步把流程跑通了记录如下 覆盖率监测的原理 Xc ...

  5. iOS自动化探索(九)使用Jenkins自动化打包并发布iOS App

    继前一篇: Mac环境下安装Jenkins Jenkins安装好后, 我们试着创建一个iOS自动打包并发布的任务 iOS App构建必须在MAC上面使用xcode进行,所以我们要安装下xcode集成插 ...

  6. iOS自动化探索(七)自动化测试框架pytest - 测试报告

    这里我们单独来看下关于如何生存测试报告 准备测试代码如下: #coding: utf- import pytest @pytest.fixture() def login(): print '输入账号 ...

  7. iOS自动化探索(六)自动化测试框架pytest - fixtures

    Fixture介绍 fixture是pytest特有的功能,它用pytest.fixture标识,定义在函数前面.在编写测试函数的时候,可以将此函数名称做为传入参数,pytest将会以依赖注入方式,将 ...

  8. iOS自动化探索(五)自动化测试框架pytest - Assert断言的使用

    使用assert语句进行断言 pytest允许使用标准的python assert语法,用来校验expectation and value是否一致 代码演示: def func(): def test ...

  9. iOS自动化探索(四)自动化测试框架pytest - 安装和使用

    自动化测试框架 - pytest pytest是Python最流行的单元测试框架之一, 帮助更便捷的编写测试脚本, 并支持多种功能复杂的测试场景, 能用来做app测试也能用作函数测试 官方文档: ht ...

随机推荐

  1. 在VMW里安装Ghost操作系统遇到的问题及解决的办法

    条件:Ghost系列系统镜像文件 遇到的问题:1.导入镜像文件时提示“无法检测此光盘映像中的操作系统”: 2.分区时提示“ezboot kernel not found” 解决办法:1.直接先创建一个 ...

  2. Python(进程池与协程)

    1.进程池与线程池: 为什么要用“池”:池子使用来限制并发的任务数目,限制我们的计算机在一个自己可承受的范围内去并发地执行任务 池子内什么时候装进程:并发的任务属于计算密集型 池子内什么时候装线程:并 ...

  3. n个数里选出m个不重复的数

    void change(int *p,int a,int b) { int tmp = *(p + a); *(p + a) = *(p + b); *(p + b) = tmp; } int mai ...

  4. java执行cmd命令和linux命令

    文章出处http://blog.csdn.net/xh16319/article/details/17302947 一:window下执行cmd指定 一:window下执行cmd指定 程序例子: [j ...

  5. 本地连不上远程mysql数据库(1)

    Ubuntu 16.04下开启Mysql 3306端口远程访问   0. 前言 网上看到很多开启Mysql远程访问端口,修改的配置文件我都没有找到. 特意查看了我的Linux版本 $ sudo lsb ...

  6. PAT 天梯赛 L1-003. 个位数统计

    题目链接 https://www.patest.cn/contests/gplt/L1-003 题意 计算每个不同数字出现的次数 思路 可以用 MAP标记, 也可以直接用数字 存 AC代码 #incl ...

  7. ZOJ - 3593 One Person Game (扩展欧几里得)

    题意:一个人在坐标A,要前往坐标B的位置.可以往左或往右走a,b,a+b个单位,求到达B的最小步数. 分析:扩展欧几里得算法求解线性方程的套路不变.令C=fabs(A-B),c = a+b, 扩展gc ...

  8. linux中相关服务不能访问的排错技巧

    Linux相关服务不能访问的排错步骤,以HTTP服务为例: 一.服务端排查思路: 1.检查SELinux是否关闭(针对CentOS6系统)  (1)临时关闭      setenforce 0  (2 ...

  9. unity,如何手动或者使用代码更换材质

    在unity中,我们可能需要更换怪物的贴图,来达到以下效果 方法1:手动配置 找到自己配置好的扩展名为.mat的文件,在怪物的节点找到带Mesh Render的子元素,将其拖放到如图位置 方法2:代码 ...

  10. 优秀 H5 案例收集 vol.3(不定期更新)

    上期浏览:Vol.1   Vol.2 爱的不同定义,五笔连成爱http://news.163.com/special/fdh5_valentines/ 世界华语悬疑文学大赛—下一位悬疑大师,就是你!h ...