Appium Mac系统 自动测试环境搭建

时间:2022-05-22 14:54:08

一、python 环境准备

Mac 自带 Python 环境,一般为 2.7 版本。

1、查看当前系统默认的Python路径

which python
==> /usr/bin/python

2、查看当前 python 版本

python --versio
==> Python 2.7.10

3. 安装 python2 的包管理工具 pip

curl https://bootstrap.pypa.io/ez_setup.py -o - | python
==> easy_install pip

4、安装 brew包管理器

ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

5、安装 Python3 版本(如有需要)

搜索 Python3

brew search python3

安装 Python3

brew install python3

运行Python3

python3

注意:不要删除python2,不要删除python2,Mac 系统有些自带App需要Python2支持。

6、安装 requests模块

Python2

sudo pip install requests

Python3

sudo pip3 install requests

二、安装 Xcode和 Android SDK环境

1、Mac Xcode 环境配置

进入App Store,下载Xcode,傻瓜安装不用多将

2、Mac 下 Android SDK 环境配置

官方下载地址: 
https://developer.android.com/studio/index.html

国内镜像地址:

http://tools.android-studio.org/index.php/85-tools/110-androidsdk-mirrors

http://www.androiddevtools.cn/

http://npm.taobao.org/

官网最底部下载对应的SDK工具包就可以了,官网大概率被墙,进去不了,去镜像网站下。

Appium Mac系统 自动测试环境搭建

下载并安装完成后,配置环境变量

# vim /etc/profile
export ANDROID_HOME=/Users/macbook/Library/Android/sdk
export PATH=$PATH:$ANDROID_HOME/tools
export PATH=$PATH:$ANDROID_HOME/platform-tools

注意:/Users/macbook/Library/Android/sdk 路径需要时自己的安装路径

3、配置 Java 环境

下载 JDK,并安装,然后配置环境变量,如下:

# vim /etc/profile
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_71.jdk/Contents/Home
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

刷新配置文件

source /etc/profile

三、Mac 下安装 Appium

Mac 下的 Appium 安装比较繁琐,因为他对iOS的支持不怎么友好,有很多的依赖需要安装,需要细心的一步一步的配置。

1、 安装 brew (已经安装,请忽略)

ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" 

2、 安装 libimobiledevice

Appium iOS真机支持依赖一个重要的第三方软件套件 libimobiledevice,使用 Homebrew 可以轻易地安装好。

brew install libimobiledevice –HEAD

3、安装 carthage

为了在Xcode 8(其中包括所有iOS 10+的测试)使用iOS真机做自动化,你要安装 Carthage 去做依赖管理:

brew install carthage

4、安装 node.js

nodejs下载地址:https://nodejs.org/en/download/

下载pkg文件,然后一键安装

5、安装 cnpm

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

6、安装 ios-deploy

作为对 libimobiledevice 依赖的补充,Appium 对 iOS 9.3 及以上和 Xcode 8 及以上的支持依赖 ios-deploy,ios-deploy可以用来安装卸载 ios应用。

cnpm有个问题,就是安装的node_module 会全部放在当前路径下。所以我们使用 cnpm 的时候,需要切换到/usr/local/lib(node模块默认安装路径)

在终端输入:

cd /usr/local/lib
cnpm install -g ios-deploy

7、安装 xcpretty

gem install xcpretty

安装时间会比较长,如果没反应,需要耐心等待。安装失败建议切换目录重新安装。也可以更换 gem 源:

gem sources --add https://gems.ruby-china.org/ --remove https://rubygems.org/

如果 gem 版本过低需要升级。

8、安装 Appium

8.1、安装 Appium-block 版本

cnpm install -g appium@1.12.1

注意:@1.12.1可以去除,去除后会自动安装最新版本

注意:安装 appium-desktop 版本,可以直接用来获取app的页面元素信息,建议另安装该版本或者直接安装 appium-desktop 版本,进入appium官网下载安装即可。

下载地址:appium/appium-desktop

8.2、安装appium-doctor

用于检测 appium 运行环境

npm install appium-doctor -g

安装完成后,执行 appium-doctor 检查 appium 安装是否完全(如果提示找不到文件,则进入appium安装目录/appium-doctor/目录下,执行./appium-doctor.js),检查结果如下:

Appium Mac系统 自动测试环境搭建

上图表明环境已配置完成,如果环境检查出现 X ,检查是否安装对应的程序和环境变量的配置。

9、安装 appium-xcuitest-driver 依赖

进入 Appium 安装目录,查找目录下的 WebDriverAgent,进入 WebDriverAgent 后,执行以下命令

mkdir -p Resources/WebDriverAgent.bundle
sh ./Scripts/bootstrap.sh

10、编译WebDriverAgentLib

进入 WebDriverAgent 目录,找到 WebDriverAgent.xcodeproj,双击打开,默认就是用Xcode打开。切换到 WebdriverAgentLib,编辑如下图内容,然后点击左上角那个播放按钮进行编译,build succeed 就可继续进行。(关于 team,可即时注册个人开发者账号,激活后填入即可,此处会返回10位ID,后面连接真机时会用到 )

Appium Mac系统 自动测试环境搭建

11、编译WebDriverAgentRunner

首先编辑general里的内容,和上面大同小异,也是需要勾选自动签名和选择开发者帐号。配置好后点击编译按钮,build succeed 就可继续进行。

Appium Mac系统 自动测试环境搭建

12、获取手机的udid

将手机通过usb连上电脑,然后打开itunes,然后选中链接的iPhone,点击一下序列号,然后会弹出 udid 。

Appium Mac系统 自动测试环境搭建

13、建立 WebDriverAgent 服务

手机开启USB调试模式与Mac 在同一网络,关闭 xcode,进入WebDriverAgent 文件夹。

cd /usr/local/lib/node_modules/appium/node_modules/appium-xcuitest-driver/WebDriverAgent xcodebuild -project WebDriverAgent.xcodeproj -scheme WebDriverAgentRunner -destination 'id=真机的udid' test

这时候可以看到手机上多了一个WebdriverAgent的app,则表示环境已经配置成功。第一次会提示不受信任的开发者,需要进入设置-通用-设备管理(描述文件) 信任你的 Apple id。

Appium Mac系统 自动测试环境搭建

14、Appium 获取元素

Mac 的Appium 获取元素需要安装appium-desktop版本。

14.1 启动 AppiumDesktop

打开 appium,启动 appium server

Appium Mac系统 自动测试环境搭建

点击右上角放大镜,打开 Appium server 设置

Appium Mac系统 自动测试环境搭建

进入 Automatic Server - Desired Capabilities 中录入对应的配置信息,如下图

Appium Mac系统 自动测试环境搭建Appium Mac系统 自动测试环境搭建

14.2 Desired Capabilities 参数

填写以上参数,等待启动,即可看到测试 app 的全部元素信息。

{ "platformName": "iOS",

"platformVersion": "11.0",

"deviceName": "iPhone 7",

"automationName": "XCUITest",

"app": "/path/to/my.app"}

编写好通用的Desired Capabilities 配置信息会自动保存到Saved Capability Sets。连接手机后,点击 Start Session按钮,开始会话。

参数说明:

根据需求添加必要的参数,常用参数如下:

"automationName": "Appium", -- 可选,搜索引擎,appium(默认)还是Selendroid

"platformName": "iOS", -- 必填,应用平台,iOS, Android, or FirefoxOS

"platformVersion": "10.3", -- 必填,测试的系统版本,设置两位就可以了

"deviceName": "iPhone7", -- 必填,使用的手机或模拟器类型,iPhone Simulator, Android Emulator, Galaxy S4

"app": "com.apple.calculator", -- Android可选,iOS必填,应用的绝对路径,与browserName属性冲突,

"appPackage" : "com.test.now", -- Android未填app参数必填,运行的 Android 应用的包名,

"appActivity": "com.sng.LauncherActivity", -- Android未填app参数必填,Activity 的名字是指从你的包中所要启动的 Android acticity,

"bundleId":"io.appium.TestApp", -- iOS未填app参数必填,用于在真实设备中启动测试,使用其他需要 bundle ID 的关键字启动测试。

"browserName":"Chromium", -- 做自动化时使用的浏览器名字, 与app 冲突,

"udid":" ", -- 多客户端链接多台手机时必填,连接真机的唯一设备号,iOS通过iTunes拷贝过来,IOS真机测试必填,

"noReset":"true" -- 在当前 session 下不会重置应用的状态, 是否清除应用缓存。默认值为false,

"fullReset":"false" -- (iOS)删除所有的模拟器文件夹。(Android) 要清除 app 里的数据,请将应用卸载才能达到重置应用的效果。在 Android, 在 session 完成之后也会将应用卸载掉。默认值为false ,

"xcodeOrgId":"123ADE4Y56", -- 十位字符的组织ID是苹果开发证书的组织单位,appium可以通过十位组织单位ID找到相应的组织,IOS真机测试必填(注意: 连接真机时,测试app的打包签名证书必须要与xcodeOrgId里的一致,否则会报证书错误,错误代码是65)

"xcodeSigningId": "iPhone Developer", -- iOS真机测试必填,这里参数是固定的,就这样写,

"wdaLocalPort":"8100" -- 默认手机连接MAC本使用的端口,默认是8100,非必填

"unicodeKeyboard":"True" -- 使用 Unicode字符,输入中文必须参数

"resetKeyboard":"True" -- 重置键盘,输入中文必须参数

更多详细的参数请参考官网:Caps - Appium

14.3 The Inspector

会话连接成功后就会展示 The Inspector,它是应用程序状态的可视化表示。

Select Elements:选取元素,可选取左边页面上的元素。获取元素的ID或者xpath等等类似的信息。选中某一元素后,该元素的详细信息会展示在右侧的视图中,并且可以在右侧选择要对此元素进行的操作,包括tap、sendkey、clear。

Swipe By Coordinates:滑动,在截图页面上定位两个点,页面将会根据定点滑动。

Tap By Coordinates:点击,可点击左边页面上的元素。

Back:相当于返回按钮

Refresh Source & Screenshot:刷新当前视图

Search for element:寻找元素,当元素无法通过 Select Elements 并无法选取到,可以使用Search for element进行元素的查找。

Start Recording:录制,开始录制你的测试脚本,注意:它是学习工具,不是代码生成工具。