自动化-Appium-环境搭建-IOS(Java版)

2022-07-25 12:41:03 浏览数 (1)

环境搭建-IOS

本章节主要讲解在Mac环境下,搭建Appium所需要的软件等。

针对IOS为Mac环境。

第1章 Xcode

Xcode是运行在操作系统Mac上的集成开发工具(IDE),由苹果公司开发。

Xcode是开发OS X和IOS应用程序的最快捷的方式。

Xcode具有统一的用户界面设计,编码、测试、调试都在一个简单的窗口内完成。

Xcode如何下载安装或更新呢?打开Mac机上的App Store,搜索Xcode,进行安装或者更新,注意观察下Xcode的更新日志,可以看到当前版本支持的IOS SDK版本。

本书Xcode版本号为9.2

下载Xcode历史版本:

1、打开官网https://developer.apple.com/download/more输入Apple账号与密码进行登录。

2、在搜索框输入Xcode,回车进行搜索,找到各种版本Xcode。

3、点击前面的 ,展开详细页面,点击文件下载就可以了。

第2章 JDK

JDK(Java Development Kit)是Java语言的软件开发工具包,主要用于移动设备、嵌入式设备上的Java应用程序。JDK是整个Java开发的核心,它包含了Java的运行环境,Java工具和Java基础的类库。

2.1安装

在Mac环境下安装JDK,执行jdk-8u144-macosx-x64.dmg默认安装即可。

2.2配置环境变量

1、打开终端,进入用户的根目录。

2、在终端输入命令 ls –a ,查询 .bash_profile文件是否存在。如果不存在,创建文件:touch .bash_profile

3、编辑文件 vi ~/.bash_profile,输入内容如下:

export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_144.jdk/Contents/Home

export PATH=PATH:JAVA_HOME/bin

4、编辑后保存文件,之后输入source ~/.bash_profile,使环境变量生效。

5、在终端输入java -version,提示以下信息表示JDK环境变量配置成功。

第3章 Homebrew

Homebrew是Mac上缺失的软件包管理器,通过它可以在终端输入命令安装各种软件包。

安装Homebrew:

1、打开官网:https://brew.sh/

2、打开终端,输入命令进行安装/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

安装完Homebrew,就可以使用brew命令了:

安装软件:brew install 软件名

卸载软件:brew uninstall 软件名

列出已安装的软件:brew list

第4章 libimobiledevice

libimobiledevice是一个跨平台的软件库,它通过协议来支持iphone、iPod Touch、ipad和Apple TV设备。与其他项目不同,它不依赖于使用任何现有的专有库,也不需要越狱。它允许其他软件轻松地访问设备的文件系统,检索有关设备及其内部的信息,备份/恢复设备,管理已安装的应用程序、检索地址簿/日历/笔记和书签,以及(使用libgpod)将音乐和视频同步到设备上。该库自2007年8月开始开发,其目标是将对这些设备的支持带到Linux桌面上。

官方网址:http://www.libimobiledevice.org/ 官方下载地址:https://github.com/libimobiledevice/libimobiledevice

安装libimobiledevice:

打开终端,输入命令 brew install --HEAD libimobiledevice

第5章 ideviceinstaller

ideviceinstaller用于给IOS设备安装卸载应用或者备份应用。它利用libimobiledevice库,允许通信使用IOS设备。

官方下载地址:https://github.com/libimobiledevice/ideviceinstaller

安装ideviceinstaller:

打开终端,输入命令 brew install --HEAD ideviceinstaller

注意:使用命令时,如果提示:Could not connect to lockdownd. Exiting.

解决方法,打开终端,输入命令:

sudo chmod -R 777 /var/db/lockdown/

或者

brew uninstall ideviceinstaller

brew uninstall libimobiledevice

brew install --HEAD libimobiledevice

brew link --overwrite libimobiledevice

brew install ideviceinstaller

brew link --overwrite ideviceinstaller

第6章 ios-webkit-debug-proxy

在Mac上我们一般调试IOS设备的webView都只能使用Safari的Web检查器。但是Safari的Web检查器用起来不如Chrome的DevTools方便。

使用Chrome DevTools调试IOS设备的webView就需要先安装ios-webkit-debug-proxy。

IOS WebKit Debug Proxy的原理是在本地起了一个代理做Web Inspector到WebKit远程调试的协议转发。ios-webkit-debug-proxy允许开发者通过Chrome DevTools UI和Chrome Remote Debugging Protocol来检查模拟器和真机上MobileSafari和UIWebview。

官方下载地址:https://github.com/google/ios-webkit-debug-proxy

安装ios-webkit-debug-proxy:

打开终端,输入命令 brew install ios-webkit-debug-proxy

安装之后运行如下命令查看是否能够调起(真机)ios-webkit-debug-proxy

打开终端,输入命令ios_webkit_debug_proxy -c UDID:27753 -d

例如:

ios_webkit_debug_proxy -c c5dc675bddf7d1ac6d91783d5224d72b427f8d04:27753 -d

注意,如果运行上述命令报错:Could not connect to lockdownd. Exiting.: Permission denied

解决方法:

打开终端,输入命令 sudo chmod -R 777 /var/db/lockdown/

Appium中使用ios-webkit-debug-proxy:

方式一:在测试脚本里DesiredCapabilities中新增如下参数。

(IWDP指的就是ios-webkit-debug-proxy)

capabilities.setCapability("startIWDP", true);

方式二:终端上输入命令直接手动启动ios-webkit-debug-proxy,然后执行自动化脚本。(Appium默认IWDP端口为27753,UDID为设备唯一标识符)

终端上输入命令 ios_webkit_debug_proxy -u UDID:port

例如:

ios_webkit_debug_proxy -u c5dc675bddf7d1ac6d91783d5224d72b427f8d04:27753

第7章 Carthage

Carthage类似于CocoaPods,为用户管理第三方框架和依赖,但不会自动修改项目文件和生成配置。

Carthage是去中心化的依赖管理工具,安装依赖时不需要去中心仓库获取CocoaPods所有依赖的索引,节省时间。对项目无侵入性,Carthage设计上也比较简单,利用的都是Xcode自身的功能,开发者在创建依赖时,相比CocoaPods也简单许多。

Carthage管理的依赖只需编译一次,项目干净编译时,不会再去重新编译依赖,节省时间。

自动将第三方框架编程为Dynamic framework(动态库);与CocoaPods无缝集成,一个项目能同时拥有CocoaPods和Carthage。

官方网址:https://github.com/Carthage/Carthage

打开终端,输入安装命令 brew install carthage

第8章 Node.js

Node.js就是运行在服务端的JavaScript,是一个基于Chrome JavaScript运行时建立的一个平台。Node.js是一个事件驱动I/O服务端JavaScript环境,基于Google的V8引擎,V8引擎执行JavaScript的速度非常快,性能非常好。

官方网址:https://nodejs.org/en/

npm是随同Node.js一起安装的包管理工具,能解决Node.js代码部署上的很多问题,常见的使用场景有以下几种:

1、允许用户从npm服务器下载别人编写的第三方包到本地使用。

2、允许用户从npm服务器下载并安装别人编写的命令行程序到本地使用。

3、允许用户将自己编写的包或命令行程序上传到npm服务器供别人使用。

在Mac环境下可以用命令行或者应用程序安装Node.js。

安装方式一:命令行安装(Homebrew已经安装上)

打开终端,输入命令 brew install node

安装方式二:应用程序

例如:本书用到的node-v6.11.3.pkg应用程序默认安装即可。

安装完成后,环境变量自动添加到系统里,直接打开终端输入node -v,提示以下信息表示Node.js安装成功。

由于新版的Node.js已经集成了npm,同样在终端输入 npm -v, 来测试是否安装成功。

第9章 ios-deploy

不使用Xcode,从命令行安装和调试IOS应用程序。

设计用来处理未越狱的设备。

官方网址:https://www.npmjs.com/package/ios-deploy

官方github网址:https://github.com/ios-control/ios-deploy

打开终端,输入安装命令 npm install -g ios-deploy

注意:如果不安装ios-deploy,在用Appium执行真机进行自动化测试时会报错。

[XCUITest] Error: Could not initialize ios-deploy make sure it is installed (npm install -g ios-deploy) and works on your system.

第10章 Appium

本章节讲解的Appium是服务端,包括:Appium Server和Appium Desktop。

Appium Server是在命令行或终端以命令安装,安装完成后直接输入命令来启动Appium服务。

Appium Desktop是一个应用程序,安装完成后直接运行即可,执行后是有图形界面的Appium服务,与Appium Server功能是一致的,但它附带了一个检查器,用来调试定位应用程序很方便。

所以Appium服务端,可以只安装Appium Server或Appium Desktop或者两个都可以安装。

Appium Desktop官方下载地址:https://github.com/appium/appium-desktop/releases/

10.1Appium Server

在Mac环境下,由于Node.js已经安装完成,直接打开终端输入命令进行安装(由于国内网络问题,安装过程中可能需要FANQIANG)。

默认安装(安装最新版本Appium Server)

npm install -g appium

默认安装(安装最新版本Appium Server,使用淘宝NPM镜像,不需要FANQIANG)

npm install -g appium --registry=https://registry.npm.taobao.org

安装指定版本(有时Appium Server当前版本可能是有问题的,需要指定版本来安装)

例如安装1.6.5版本

npm install -g appium@1.6.5

查看Appium Server所有的版本号

npm view appium versions #

注1:在Mac环境下安装可能会有权限的限制,导致无法安装,可以在命令前加sudo

例如:sudo npm install -g appium

注2:有时候Appium无法安装上,即使加sudo也无法安装上,例如:

输入npm install -g appium,无法安装上。

输入sudo npm install -g appium,也无法安装上。

解决方法:

  1、卸载Appium和Node.js(pkg/dmg安装方式无需卸载)。

  2、打开终端输入sudo chmod -R 777 /usr/local

  3、重新安装Appium(例如:输入npm install -g appium)

安装完成后,Mac下默认安装路径,例如:

/usr/local/lib/node_modules/

打开终端,输入appium,提示以下信息表示Appium Server安装成功且Appium服务已经开启。例如:Appium Server 1.6.5

如果命令行安装Appium失败或者不完整,可以拷贝已有命令行安装过的完整包覆盖到此Mac下Appium默认安装路径位置也是可以的。

例如:命令行安装后的Appium-v1.6.5包.zip进行解压,将解压后的appium文件拷贝覆盖到/usr/local/lib/node_modules/目录下的appium文件。

10.2Appium Desktop

在Mac环境下安装Appium Desktop,例如:执行appium-desktop-1.2.1.dmg默认安装即可。

安装完成后,Mac下默认安装路径,例如:

/Applications

在应用程序里,直接执行Appium.app来启动Appium Desktop。

点击Start Server v1.6.5来开启Appium服务,如下图服务开启成功。

注意:

在使用Appium Desktop进行自动化测试的时候,如报错:

[XCUITest] Error: Could not determine Xcode version: Could not get Xcode version. /Library/Developer/Info.plist does not exist on disk.

说明是先安装Appium Desktop后再安装的Xcode,导致获取不到Xcode版本。

解决方法:卸载Appium Desktop,之后再重新安装Appium Desktop

第11章 Appium Clients

Appium Clients为Appium的客户端,支持Java、Ruby、Python、PHP、JavaScript和C#。

本书是Java版,所以需要下载jar包的。下载java-client-x-x-x.jar包即可。

各版本下载地址:

https://search.maven.org/#search|gav|1|g:"io.appium" AND a:"java-client"

本书Appium会用到java-client-4.1.2.jar或java-client-6.1.0.jar。

将下载的jar包引用到项目里就可以使用Appium了。

第12章 Appium Doctor

Appium Doctor是一个用于验证Appium安装环境的工具,可以诊断出Node.js、Android、IOS环境配置方面的常见问题。

在Mac环境下,直接打开终端输入命令进行安装

npm install -g appium-doctor

安装完成后,在终端执行appium-doctor --ios,会检测Appium的IOS基础环境是否正确,如提示以下信息,证明环境没有问题。

注意:如果在检查环境上提示:Xcode Command Line Tools are NOT installed!

可以再接下来输入yes进行安装 或者 在终端输入xcode-select –install进行安装,安装成功后,再次检查环境配置都成功。

在终端执行appium-doctor,会检测Appium的Android与IOS基础环境是否正确,如提示以下信息,证明环境没有问题。

第13章 模拟器/真机

自动化测试执行的时候是需要在移动设备上的,此时就需要准备模拟器或者是真机。

13.1模拟器

创建模拟器,打开已经安装好的Xcode(位于/Applications/Xcode.app)。

Xcode打开后,随便选择一个工程或者新建一个工程,这里新建一个工程,选择Create a new Xcode project。

默认点击下一步。

输入产品名称后,点击下一步。

选择存放路径(例如:存放到test目录下),之后点击创建。

工程创建完成。并点击此区域,如下图:

IOS Simulators区域就是可以选择不同型号的模拟器,这里选择iPhone 8为例。

之后点击运行。

模拟器启动完成。

注意:此模拟器的IOS SDK版本为11.2,那如果我想用11.2之前的IOS SDK版本要怎么操作呢?打开Download Simulators。

在Components里可以下载到IOS SDK的旧版本了。

最后将IOS模拟器固定在Dock中(这样每次启动IOS模拟器可以从Dock上点击启动,而不用打开Xcode选择或者新建工程中启动了),选中“在Dock中保留”即可。

13.2真机

准备iphone手机,注意:IOS SDK要与手机的版本对应,如果没有就下载对应版本。

例如:使用的真机是11.1.2版本,则IOS SDK要下载11.1版本才可以。

第14章 WebDriverAgent

WebDriverAgent在IOS端实现了一个WebDriver server,借助这个server我们可以远程控制 IOS设备。可以启动、杀死应用,点击、滚动视图,或者确定页面展示是否正确等。而且真机和模拟器都支持。

官方网址:https://github.com/facebook/WebDriverAgent

下面开始讲解在模拟器/真机上安装WebDriverAgent:

WebDriverAgent安装步骤:

1、进入WebDriverAgent

方式一:在Appium自动化测试过程中,如果使用的是Appium Server。

进入Appium Server安装目录下的WebDriverAgent目录(可以用Spotlight搜索查找):

/usr/local/lib/node_modules/appium/node_modules/appium-xcuitest-driver/WebDriverAgent

方式二:在Appium自动化测试过程中或者是用真机调试抓取App元素,如果使用的是Appium Desktop。

进入Appium Desktop安装目录下的WebDriverAgent目录(可以用Spotlight搜索查找):

/Applications/Appium.app/Contents/Resources/app/node_modules/appium/node_modules/appium-xcuitest-driver/WebDriverAgent

方式三:可以从官网下载WebDriverAgent,之后将整个WebDriverAgent文件拷贝到

Appium Server或者Appium Desktop目录下,覆盖原有WebDriverAgent文件即可。

打开终端,输入命令 git clone https://github.com/facebook/WebDriverAgent

进入从官网下载的WebDriverAgent目录(可以用Spotlight搜索查找):

例如:/Users/test/WebDriverAgent

在Appium自动化测试过程中,运行哪种方式(Appium Server或Appium Desktop),就将此WebDriverAgent文件拷贝覆盖Appium Server或Appium Desktop安装目录下的WebDriverAgent文件即可。

Appium Server安装目录下的WebDriverAgent目录(可以用Spotlight搜索查找):

/usr/local/lib/node_modules/appium/node_modules/appium-xcuitest-driver/WebDriverAgent

Appium Desktop安装目录下的WebDriverAgent目录(可以用Spotlight搜索查找):

/Applications/Appium.app/Contents/Resources/app/node_modules/appium/node_modules/appium-xcuitest-driver/WebDriverAgent

2、在WebDriverAgent当前目录下执行脚本

打开终端,输入命令 sh ./Scripts/bootstrap.sh

注意:

在执行过程中提示报错:Error: Cannot find module 'eslint-config-appium'

解决方法:

在终端执行npm install eslint-config-appium

之后再执行sh ./Scripts/bootstrap.sh

到此步骤为止,就可以用模拟器来进行Appium自动化测试了,在执行的时候WebDriverAgent自动安装到模拟器上。如图所示:

那么模拟器可以了,真机呢?真机要接着往下进行证书签名操作。

3、编译WebDriverAgent.xcodeproj

双击打开当前目录下的WebDriverAgent.xcodeproj文件,默认Xcode会将此文件打开。

在Xcode上登录Apple ID的开发者账号(Xcode--->Preferences--->Accounts中登录)。

TARGETS--->WebDriverAgentLib和WebDriverAgentRunner的Signing选择开发者账号使用的Team和证书(画黑色横线的部分)。

TARGETS--->WebDriverAgentLib和WebDriverAgentRunner的Product Bundle Identifier定义一个新的名字,因为Bundle ID不能重复,可以在原有名字后追加部分内容。

例如:com.facebook.WebDriverAgentLib改为com.facebook.WebDriverAgentLib123

例如:com.facebook.WebDriverAgentRunner改为com.facebook.WebDriverAgentRunner456

之后在Xcode上点击Product--->Build,将工程文件编译一下。

4、真机与Mac相连,将WebDriverAgent安装到真机上(有两种安装方式,任选其一即可)。

方式一:

首先获取真机的UDID,打开终端,输入命令 idevice_id -l

查到的UDID为c5dc675bddf7d1ac6d91783d5224d72b427f8d04

之后还是在当前的WebDriverAgent目录下,打开终端,执行下面的命令安装WebDriverAgent。

xcodebuild -project WebDriverAgent.xcodeproj -scheme WebDriverAgentRunner -destination 'id=你的UDID' test

例如:

xcodebuild -project WebDriverAgent.xcodeproj -scheme WebDriverAgentRunner -destination 'id=c5dc675bddf7d1ac6d91783d5224d72b427f8d04' test

如果没有报错证明安装成功,同时真机上会安装一个WebDriverAgent软件。

方式二:

在Xcode上选择目标设备(Product--->Destination--->Device),例如:test

选择WebDriverAgentRunner(Product--->Scheme--->WebDriverAgentRunner)。

最后运行Test(Product--->Test)。

此时可以在控制台界面看到设备的IP。如果看不到的话,使用这种方法打开(View--->Debug Area--->Activate Console)。

通过控制台打印出的IP和端口,再加上/status合成一个url地址。

例如http://10.106.17.101:8100/status,然后浏览器打开。会看到输出一串JSON。

如果没有报错证明安装成功,同时真机上会安装一个WebDriverAgent软件。

第15章 Selenium jar

除了使用Appium Clients 的jar包,还要使用Selenium的jar包,比如在测试脚本里使用DesiredCapabilities就需要用到这个包。下载selenium-server-standalone-x-x-x.jar包即可。

下载地址:http://selenium-release.storage.googleapis.com/index.html

根据不同的版本进行下载。

本书Appium章节会用到selenium-server-standalone-2.53.1.jar或selenium-server-standalone-3.12.0.jar。

将下载的jar包引用到项目里就可以使用了。

注意(Appium Clients要与Selenium版本匹配,否则执行脚本会报错):

Appium Clients使用java-client-4.1.2.jar包,则Selenium使用selenium-server-standalone-2.53.1.jar包。

Appium Clients使用java-client-6.1.0.jar包,则Selenium使用selenium-server-standalone-3.12.0.jar包。

第16章 Eclipse

Eclipse是一个开放源代码的、基于Java的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。Eclipse附带了一个标准的插件集,包括Java开发工具(Java Development Kit,JDK)。

官方下载地址:https://www.eclipse.org/downloads/

在Mac环境下安装Eclipse,执行eclipse-jee-oxygen-R-macosx-cocoa-x86_64.dmg默认安装即可。安装完成后,进入应用程序,执行Eclipse.app,即可运行Eclipse程序。

0 人点赞