appium ios 真机自动化环境搭建
近期由于工作需要,本小菜在弄appium+ios+iphone真机的移动自动化,在网上找寻各种资料,发现针对IOS方面的资料少之又少,公司其它部门的弄过的同事也寥寥无几,即使有,也是安卓方面的。本次书写此文章,是为了帮助依然在坑里摸爬滚打的伙伴们,早日出坑。
一、环境:
macBook Pro:10.13.4
iphone真机:iphone6 plus 11.3.1
appium 1.8.1
xcode 9.3.1
二、appium原理(转自https://blog.csdn.net/achang21/article/details/60956618的介绍)
Appium是一个开源、跨平台的测试框架,可以用来测试原生及混合的移动端应用。Appium支持IOS、Android及FirefoxOS平台。Appium使用WebDriver的json wire协议,来驱动Apple系统的UIAutomation库、Android系统的UIAutomator框架。Appium对IOS系统的支持得益于Dan Cuellar’s对于IOS自动化的研究。Appium也集成了Selendroid,来支持老android版本。
Appium支持Selenium WebDriver支持的所有语言,如java、Object-C、JavaScript、Php、Python、Ruby、C#、Clojure,或者Perl语言,更可以使用Selenium WebDriver的Api。Appium支持任何一种测试框架。如果只使用Apple的UIAutomation,我们只能用javascript来编写测试用例,而且只能用Instruction来运行测试用例。同样,如果只使用Google的UIAutomation,我们就只能用java来编写测试用例。Appium实现了真正的跨平台自动化测试。
appium选择了client-server的设计模式。只要client能够发送http请求给server,那么的话client用什么语言来实现都是可以的,这就是appium及webdriver如何做到支持多语言的;
三、环境搭建步骤:
---------------------必要的库安装--------------------------------------
1.xcode安装,app store里安装xcode
2.如果没有安装 过homebrew,请先安装
/usr/bin/ruby -e "$(curl –fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
3.如果没有安装过npm及node.js,请先安装
brew install npm,此命令执行后,npme和node.js会全部安装完毕
4.安装依赖库
brew install libimobiledevice --HEAD
npm install -g ios-deploy #如果是iOS10以上的系统才需要安装
如果没有安装 libimobiledevice,会导致Appium无法连接到iOS的设备,所以必须要安装,如果要在iOS10+的系统上使用appium,则需要安装ios-deploy
5.appium-doctor 安装
npm install appium-doctor -g
安装后执行appium-doctor --ios指令,可以查看与iOS相关配置是否完整,下图是全部配置都成功,如果有哪一项是打叉的,则进行安装就可以了。比如如果carthage项是打叉的,则需要安装:
brew install carthage
---------------------webdriverAgent--------------------------------------
1.安装webdriverAgent
(1)在github上下载最新webdriverAgent代码
git clone https://github.com/facebook/WebDriverAgent
(2)下载依赖
cd /Users/yourname/WebDriverAgent
mkdir -p Resources/WebDriverAgent.bundle
sh ./Scripts/bootstrap.sh
该脚本会使用Carthage下载所有的依赖,使用npm打包响应的js文件。执行完成后,直接双击打开WebDriverAgent.xcodeproj这个文件。
2.配置WebDriverAgent
配置WebDriverAgentLib,选择开发者账号
配置WebDriverAgentRunner,选择开发者账号
3.连接并选择自己的ios设备,运行
运行成功后,iphone手机上会新建一个无图标的WebDriverAgent的应用,自动打开后马上又返回桌面
而在xcode控制台会打印如下日志:里面有IP地址与端口号
4.在网址上输入http://(ip地址):(端口号)/status,如果网页上返回一些json格式的数据,说明运行成功http://10.0.223.58:8100/status,有些iphone手机通过手机的IP和端口号还不能访问,此时需要将手机的端口转发到mac上
iproxy 8100 8100
执行命令后,通过访问 http://localhost:8100/ status来验证, 如果网页上返回一些json格式的数据,说明运行成功
而如果是想查看UI的图层,则可访问http://localhost:8100/inspector,方便书写测试用例
备注:通常来说为了持续集成,自动化会比较好一些,我们不必每次都通过这种方式来启动xcode、WebDriverAgent,这种方式只在第1次搭建环境时运行即可,我们可以在自动化脚本中加入如下代码,这样只要在以后启动appium后,运行自动化脚本,就会直接启动WebDriverAgent
desiredCapabilities.setCapability("useNewWDA", true);
如果xcode在先启动wda,而代码中又用此行代码,运行时xcode中会显示执行失败,报出冲突的错误哦,所以后期只在代码中启动WebDriverAgent即可,不再需要用xcode启动
---------------------appium--------------------------------------
appium安装
我是使用源码安装的,在appium的版本选择上,我不建议一味的追求最新版,因为最新的版本相配套的其它依赖有可能还没有同步更新,可能会报各种各样的错误,而且最新版可能还不稳定,在此次搭建环境过程中,我用最新版appium会发现appium的bug,经在github上与appium开发者反复讨论,修复bug,才能解决问题。所以在版本的选择上,我建议使用稳定版本,而不必一味追求最新,小白鼠的角色并不好做,稳定才是最好的~
npm install –g appium
启动appium
appium --address 127.0.0.1 --port 4723
2.appium环境搭建的其它问题和调试方法:
(1)在appium执行过程中,我们可以根据appium的日志来查看哪个环节有错误,以下是我在网上随便找的一些日志分析,https://blog.csdn.net/jffhy2017/article/details/69372064,可以google找哦,网上关于日志分析的内容很多。
如果在appium执行中哪个环节出错,我们可以将post的命令直接输入在url中,看看返回的json串中的详细错误信息,根据此错误信息排错。
http://10.0.223.58:8100/(POST的命令)
(2)可以在github上给appium的开发者留言,来解决问题。自己的英文+google翻译,appium的开发者还是很耐心的,而且解决问题一针见血,非常对症~
附上我一个问题:https://github.com/appium/appium/issues/10775
---------------------appium实践实例-解锁九宫格-----------------------------------
(附上动态效果图:以后再加。。。)
代码如下:
public class SampleTest1 {
private IOSDriver driver;
@Before
public void setUp() throws MalformedURLException {
DesiredCapabilities desiredCapabilities = new DesiredCapabilities();
desiredCapabilities.setCapability("deviceName", "iphone 6 Plus");
desiredCapabilities.setCapability("platformVersion", "11.3.1");
desiredCapabilities.setCapability("platformName", "iOS");
desiredCapabilities.setCapability("app", "/Users/yangyang50/Desktop/work/JDMEIphone_4.6.0.ipa");
desiredCapabilities.setCapability("udid", "*****************");//请填写手机的udid
desiredCapabilities.setCapability("autoLaunch", false);
desiredCapabilities.setCapability("useNewWDA", true);
desiredCapabilities.setCapability("xcodeOrgId","******");//请填写开发者帐号对应的OrgId
desiredCapabilities.setCapability("xcodeSigningId","iPhone Developer");
URL remoteUrl = new URL("http://localhost:4723/wd/hub");
driver = new IOSDriver(remoteUrl, desiredCapabilities);
}
@Test
public void sampleTest1() throws InterruptedException{
MobileElement element_cancel = (MobileElement) driver.findElementByAccessibilityId("取消");
element_cancel.click();
Thread.sleep(2000);
MobileElement element_1 = (MobileElement) driver.findElementByXPath("(//XCUIElementTypeButton[@name=\"lock botton unselected\"])[1]");
MobileElement element_3 = (MobileElement) driver.findElementByXPath("(//XCUIElementTypeButton[@name=\"lock botton unselected\"])[3]");
MobileElement element_6 = (MobileElement) driver.findElementByXPath("(//XCUIElementTypeButton[@name=\"lock botton unselected\"])[6]");
TouchAction action = new TouchAction(driver);
action.press(element_1).waitAction(500).moveTo(element_3).waitAction(500).moveTo(element_6).release().perform();
Thread.sleep(1000);
}
@After
public void tearDown() {
driver.quit();
}
}
---------------------
作者:softwareyan
来源:CSDN
原文:https://blog.csdn.net/u012873868/article/details/81132413
版权声明:本文为博主原创文章,转载请附上博文链接!
appium ios 真机自动化环境搭建的更多相关文章
- appium ios真机自动化环境搭建&运行(送源码)
appium ios真机自动化环境搭建&运行(送源码) 原创: f i n 测试开发社区 6天前 Appium测试环境的搭建相对比较烦琐,不少初学者在此走过不少弯路 首先是熟悉Mac的使用 ...
- appium ios真机自动化环境搭建&运行(送源码)
appium ios真机自动化环境搭建&运行(送源码) 原创: f i n 测试开发社区 6天前 Appium测试环境的搭建相对比较烦琐,不少初学者在此走过不少弯路 首先是熟悉Mac的使用 ...
- 搭建Mac+Java+appium+IOS真机自动化环境
一.安装前环境准备 1.确保电脑已经有homebrew(包管理器) 下载链接[https://brew.sh/] 2.通过 brew 安装node.js brew install node 安装 ...
- appium -ios 真机连接 环境搭建
补充点一: 安装ios-deploynpm install -g ios-deploy 安装不了报错.! 后来找了找,发现sudo npm install -g ios-deploy --unsafe ...
- MAC电脑下Appium + python3 + robotframework ios的真机测试环境搭建
本人的环境搭建前的准备,MAC电脑一台(macOS Mojave 10.14.0及以上),Xcode 10.0及以上 ,自己注册的一个Apple ID 账户,必须你的电脑能连接互联网,最好不要用公 ...
- mac 下 配置appium +ios真机环境
mac系统:10.11.6 xcode:7 appium:1.5.3 iphone: 6 p 1.搭建 appium 安卓的环境: 1.jdk 2.sdk 3.appium 4.配置环境变量 mac下 ...
- Appium+iOS真机环境搭建
安装目录 1.macOS系统 10.12.6 2.xcode 9.0 3.appium Desktop 1.12.1 4.node.js node -v npm 5.cnpm npm insta ...
- MAC本上appium连接真机
简单介绍一下appium连接ios真机测试环境的软件安装及配置过程: 目前我用的是desktop版本的appium, 所以MAC版本必须要升级到10.12以上,Xcode版本必须要在8.0以上,否则亲 ...
- 基于python的App UI自动化环境搭建
Android端Ui 自动化环境搭建 一,安装JDK.SDK 二,添加环境变量 Widows:1.系统变量→新建 JAVA_HOME 变量E:\Java\jdk1.7.0 jdk安装目录 2.系统变量 ...
随机推荐
- Educational Codeforces Round 56 (Rated for Div. 2) E(1093E) Intersection of Permutations (树套树,pb_ds)
题意和分析在之前的链接中有:https://www.cnblogs.com/pkgunboat/p/10160741.html 之前补题用三维偏序的cdq的分治A了这道题,但是感觉就算比赛再次遇到类似 ...
- python 爬虫 下载图片
import os#导入操作系统模块from urllib.request import urlretrieve#下载url对应的文件from urllib.request import urlope ...
- pecl的使用
1. 安装方法 : pecl install packagename, 安装目录在/usr/local/php7/lib/php/extensions 例如:pecl install sealog 2 ...
- 关于pdf阅读器的选择
如果只是想简单阅读不做学习笔记.标注之类的 可以直接用chrome firefox打开,它们内部有一个pdf.js实现了pdf标准可以直接阅读. 如果是要批注pdf,就和在纸质书上做笔记.添加书签,那 ...
- CF 959E Mahmoud and Ehab and the xor-MST
第一反应是打表找规律……(写了个prim)但是太菜了没找到 于是开始怀疑是不是我的表错了,又写了一个克鲁斯卡尔,然后结果是一样的……(捂脸) 后来从克鲁斯卡尔的算法上发现了一点东西,发现只有2的幂次长 ...
- Day Day Up—— ——fseek()函数的用法
在牛客网遇到的一个程序题中用到了函数fseek()故查阅了一下该函数的功能及用法,整理如下: fseek函数功能是把文件指针指向文件的开头,需要包含头文件stdio.h 功 能: 重定位流上的文件指针 ...
- STL源码剖析--迭代器(转)
一.为什么需要traits编程技术 前面说了很多关于traits的光荣事迹,但是却一直没有介绍traits究竟是个什么东西,究竟是用来干什么的?traits在英文解释中就是特性,下面将会引入trait ...
- Java50道经典习题-程序40 字符串排序
题目:根据字符串内字符的ASCII码值对字符串数组进行排序.分析:字符串用ASCII码比较大小,规则是:1.比较首字母的ASCII码大小2.若是前面的字母相同,则比较之后的字母的ASCII码值3.若是 ...
- HTML5与CSS3基础教程(第7版) 高清PDF扫描版
HTML5与CSS3基础教程(第7版)试读不仅介绍了文本.图像.链接.列表.表格.表单.多媒体等网页元素,也介绍了如何为网页设计结构.布局,添加动态效果.格式化等形式,此外还涉及调试和发布.聚合和吸引 ...
- P2446 [SDOI2010]大陆争霸
\(\color{#0066ff}{ 题目描述 }\) 幻想历8012年5月12日深夜,斯普林·布拉泽降下神谕:"Trust me, earn eternal life."克里斯军 ...