[本文出自天外归云的博客园]

原理

对于iOS自动化操作,主要靠WebDriverAgent来完成。在Mac电脑上连接真机iPhone,运行WebDriverAgentRunner会在Mac端启动WDA服务器,并在手机iPhone端安装一个WebDriverAgentRunner应用。我们通过编写脚本来与WDA服务器通信,告诉WDA服务器我们想要如何操作iPhone手机,WDA服务器与安装在手机iPhone端的WebDriverAgentRunner应用通信并通过该app发送模拟指令来实现操作iPhone手机

安装过程

1. 安装WebDriverAgent:https://github.com/facebook/WebDriverAgent

2. 及其依赖的库Carthage:https://github.com/Carthage/Carthage

3. 需要npm的支持

启动与停止WDA服务器

方式1:命令行启动模拟器 xcodebuild -project WebDriverAgent.xcodeproj -scheme WebDriverAgentRunner -destination 'platform=iOS Simulator,name=iPhone 6' test

方式2:在真机上运行参考这篇文章进行配置:ATX 文档 - iOS 真机如何安装 WebDriverAgent

停止运行WDA:Xcode-Product-Stop

安装并了解facebook-wda的用法

1. 安装wda的python库:pip install facebook-wda

2. 了解facebook-wda

遇到的问题与解决方法

1. 从app安装包的plist文件中查看iOS应用的bundleId

2. 通过facebook-wda点击home键报错解决办法: “这个是wda的问题,判断桌面是否出现导致了超时,英文系统是Docker,中文系统是程序坞”,解决方法是更改WebDriverAgent文件夹下WebDriverAgentLib文件夹下的FBSpringboardApplication.m文件中fb_isApplicationBoardVisible函数的返回为return self.otherElements[@"Dock"].isEnabled || self.otherElements[@"程序坞"].isEnabled;

编写脚本

可以通过编写运行python脚本,通过调用wda封装的方法,与WebDriverAgentRunner运行的服务器交互。实现一些自定义的行为,达到操控iPhone的目的。例如:

import wda

c = wda.Client('http://WDAServer的ip:8100')
print(c.status())
c.healthcheck()
c.home()
s = c.session('app的bundleId')
s(text="跳过").click_exists(timeout=5.0)
s(text="广场").click_exists(timeout=5.0)
s.close()

以上代表的基本关键操作如下:

1. 连接已经运行起来的WebDriverAgentRunner服务器,在xcode的终端可以看到WDAServer的ip

2. 通过app的bundleId来启动app

3. 判断是否有指定文字的按钮并点击,设置超时时间为5s

基于facebook-wda的iOS自动化操作实践记录的更多相关文章

  1. 【Mac + Python3.6 + ATX基于facebook-wda】之IOS自动化(三):facebook-wda库--API学习以及附录:Github上对WDA的问题解答

    下面简单介绍facebook-wda库--API的学习 import wda # debug模式,会在run运行时控制台生成消息 wda.DEBUG = False # False 关闭,True开启 ...

  2. 【Mac + Python3.6 + ATX基于facebook-wda】之IOS自动化(一):WebDriverAgent安装

    此篇介绍如何安装WebDriverAgent,下一篇介绍facebook-wda库的安装使用以及自动化脚本的开发. 前言: 对于iOS的应用的测试,如果不需要用到图像识别,推荐使用这个项目facebo ...

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

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

  4. 基于Docker搭建Jumpserver堡垒机操作实践

    一.背景 笔者最近想起此前公司使用过的堡垒机系统,觉得用的很方便,而现在的公司并没有搭建此类系统,想着以后说不定可以用上:而且最近也有点时间,因此来了搭建堡垒机系统的兴趣,在搭建过程中参考了比较多的文 ...

  5. [转]基于AWS的自动化部署实践

    作者 徐桂林 发布于 2014年1月22日 -------------------------------------------------------------------- 1. 背景 在过去 ...

  6. 基于AWS的自动化部署实践

    过年前,我给InfoQ写了篇文章详细介绍我们团队在过去4年基于AWS的自动化部署实践.文章包括了:为什么选择AWS.AWS上自动化部署的优势和挑战.我们的解决方案,以及和AWS DevOps方案(Op ...

  7. 基于 Docker 和 GitLab 的前端自动化部署实践笔记

    基于 Docker 和 GitLab 的前端自动化部署 实践笔记 随着接触的项目越来越多,在部署测试流程上重复耗时工作也越来越多,所以对前端工作的CI/CD实现愈发迫在眉睫. 前端开发由于三大框架的崛 ...

  8. iOS自动化之WDA(WebDriverAgent)安装

    1.WDA介绍 WebDriverAgent 在 iOS 端实现了一个 WebDriver server ,借助这个 server 我们可以远程控制 iOS 设备.你可以启动.杀死应用,点击.滚动视图 ...

  9. 一招让 IOS 自动化化快的飞起

    前言 最近在做IOS自动化测试,IOS的Appium环境都配置OK,Demo脚本运行没有问题,多开执行没有问题,IOS安卓统一平台调度集成没有问题,可以进行自动化测试.课时真正执行用例时发现个严重问题 ...

随机推荐

  1. Pandas 学习记录(一)

    1.DataFrame 按照列和按照行进行索引数据 按照列索引 df[’column_name’] 按照行索引 df.loc[’row_key’] 或 df.iloc[index] 2.先行后列索引单 ...

  2. BZOJ.5338.[TJOI2018]xor(可持久化Trie)

    BZOJ LOJ 洛谷 惊了,18年了还有省选出模板题吗= = 做这题就是练模板的,我就知道我忘的差不多了 询问一就用以DFS序为前缀得到的可持久化Trie做,询问二很经典的树上差分. 注意求询问二的 ...

  3. Markdown 的离线编辑工具推荐:Sublime Text3 or Typora?我推荐Typora

    最新版Sublime Text3 通过插件的方式,可以完美支持Markdown文档的编写,但是,唯一不完美的是实时预览的缺陷.可能各位看官要喷了,谁说Sublime Text3 不能实时预览的?你看: ...

  4. Java WebSocket 线程安全的保证

    Java WebSocket线程安全基于3点: 1 在新的客户端连接时,WebSocket容器会创建一个新的端点实例,对应的会话实例表示从唯一的客户端到该端点实例的唯一连接. 2 每个WebSocke ...

  5. Redis、Memcache、MongoDb的优缺点

    Redis.Memcache.MongoDb的优缺点 Redis优点 支持多种数据结构,如 string(字符串). list(双向链表).dict(hash表).set(集合).zset(排序set ...

  6. http理解

    http是一种基与客户端和服务端的架构模式,通过一种可靠的连接(URL)来交换消息,是一个诶状态的请求/响应协议. http协议传输过程 client发送request到server,server接收 ...

  7. 微信小程序中的单位

    vw:viewpoint width,视窗宽度,1vw等于视窗宽度的1%. vh:viewpoint height,视窗高度,1vh等于视窗高度的1%. rpx:rpx单位是微信小程序中css的尺寸单 ...

  8. poj3614 Sunscreen(贪心+STL)

    https://vjudge.net/problem/POJ-3614 如果这不是优先队列专题里的,我可能不一定能想到这么做. 结构体命名得有点不好,解题中看着Edge这个不恰当的命名,思路老是断掉. ...

  9. HTML 回顾整理

    <html>标签:定义HTML文档 <body>标签:定义文档主体 <h1> - <h6> 标签:定义HTML标题 <hr> 标签:创建水平 ...

  10. C. Playing Piano 动态规划

    题目意思是给你一个n长度的数字串为a,让你构造一个n长度的数字串b值都为1-5满足以下条件: 正常的dfs暴力构造会超时,我试过了.. 可以开一个二维数组dp[i][j]用来表示b的第i个数字为j是否 ...