Java + testng +maven + appium for IOS 自动化测试
来源:互联网 发布:网络自由闭关锁国2017 编辑:程序博客网 时间:2024/05/21 17:56
1 背景介绍
为了在自动化测试中节省时间节省真机的成本,而且更高效的覆盖所有的IOS版本,避免兼容性问题和实现全面自动化测试,我采用saucelabs(https://saucelabs.com)平台提供的虚拟设备。使用简单易书写的Java语言和appium开源框架以及单元测试testng,创建maven工程(为了不在工程中引入jar包),将需要的jar写入pom .xml 文件中,最后使用jenkins 构建自动运行实现IOS全自动化测试。这样一来就完全不用人为干预,只需要关注测试结果就好了。
2 环境搭建
2.1 Mac OS X
要进行IOS自动化测试的前提是需要一台mac设备或者一台黑苹果。
2.2 安装Xcode
在Apple 官网注册Apple Id,用Apple Id 登录开发者网站(https://developer.apple.com/download/)下载xcode并安装即可(如下图):
2.3 安装 Xcode command line tools
Xcode安装完成后启动终端,在终端输入xcode-select –install,在弹出的界面选择安装,等待安装成功:
2.4 安装Homebrew
- 在终端输入如下命令,等执行完成即可:
usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
- 安装完成后执行检查命令安装是否成功:
brew -v
2.5 安装ideviceinstaller
- 执行如下命令安装即可:
brew install ideviceinstaller
- 执行如下命令检查是否安装成功:
ideviceinstaller -h
2.6 安装 JDK & 配置环境变量
在官网下载jdk 版本,并配置系统环境变量(以jdk 1.8.0_111为例)。
- 打开jdk的dmg文件,双击安装,安装完成后打开终端输入如下命令查看当前使用的java:
/usr/libexec/java_home
- 终端输入vi ~/.bash_profile 进入编辑模式:
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_111.jdk/Contents/Homeexport PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATHexport CLASS_PATH=$JAVA_HOME/lib:$JAVA_HOME/jre/lib
保存并退出(实际就是vim的命令)
- 按下键盘键Esc
- 按下 shift + :
- 输入 wq
使得环境变量生效执行如下命令:
source ~/.bash_profile
- 查看当前设置的JDK信息,确保环境变量设置成功:
java -version
2.7 安装 Appium
下载(https://bitbucket.org/appium/appium.app/downloads/)appium dmg 文件(如下图),打开Appium的dmg包,复制Appium.app到Applications文件夹中,即完成安装。
2.8 安装 Eclipse & 给Eclipse 安装testng插件
- 在官网下载Eclipse 安装即可。
- 安装 testng:
打开eclipse进入界面后,点击菜单中的”Help”,弹出下拉菜单中进行选择为install new software的选项。进入到了install的选项界面中,点击菜单中的add的选项, 在location 一栏里输入插件地址(http://beust.com/eclipse/)点击下一步下一步即可完成安装。
2.9 安装 maven
- 官网下载(https://maven.apache.org/download.cgi)maven 包。
- 打开终端(Terminal),输入以下命令,设置Maven classpath:
$ vi ~/.bash_profile
- 添加下列两行代码,之后保存并退出Vi:
export M2_HOME=/Users/robbie/apache-maven-3.3.9 export PATH=$PATH:$M2_HOME/bin
- 输入命令以使bash_profile生效:
source ~/.bash_profile
- 输入mvn -v查看Maven是否安装成功。
- 如有异常,重新编辑bash_profile文件,加入export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_111.jdk/Contents/Home后,并重新运行$ source ~/.bash_profile即可。
2.10 检查以上环境是否设置成功
打开appium的doctor 查看如下图:
得到如下结果说明环境搭建成功:
3 使用 appium 的inspector 获取界面元素书写testCase
启动Appium并打开iOS的设置页面,使用模拟器不要勾选UDID。注意App Path路径的正确性以及设备的系统版本号的设置。
设置完成后,点击Launch按钮,以启动Appium Server。
启动Inspector:
启动AppiumServer后,(如果真机要连接好真机,并确保Appium的参数设置正确(与设备保持一致)),本文采用的为模拟器,点击Inspector按钮启动Inspector。此时Appium Server会自动安装app并启动被测App并通过instruments抓取页面元素展示到Inspector页面,就可以开始获得页面元素信息开始自动化脚本的编写工作了 。
4 写好testCase 如何在模拟器上运行
选择在本地运行:
点击Launch按钮,以启动Appium Server;
选中testcase文件右击–》 Run As –》 TestNG test (如下图1),由于本文创建的是maven 工程也可以执行选中pom.xml ->Run As–>Maven test (如下图2);
图片1:
图片2:选择在saucelabs 平台运行,它可以提供各个版本的模拟器,多设备并行运行:
只需要把注册的账号写入testCase中如下:
desiredCapabilites.SetCapability("accessKey", "e04e33ef-8e226-4b36-8865-e89ad2229721"); desiredCapabilites.SetCapability("username", "linda123456");
选中pom.xml ->Run As–>Maven test 运行,或者在jenkins 中建立maven 项目,配置pom.xml路径、触发时间、testng 作为测试结果报告,出错发邮件等。这时就可以实现IOS全自动化测试。你只需要关注测试结果就好了,当然你可以去saucelabs 查看 测试过程中录制的视频,结合测试结果报告,很快找到testCase fail的原因,用于修改testCase或提bug。
PS:
//查看devices id命令:instruments -s devices//命令行安装*.app//启动模拟器:xcrun instruments -w 'iPhone 6 Plus'//在已经启动的模拟器中安装.app:xcrun simctl install booted /User/liangwang/DownLoad/Spotlight.app(要提供.app的安装路径)//卸载*.app的命令:xcrun simctl uninstall booted com.quest.Spotlight (应用的包名)//查看应用程序的包名:用itools,终端命令行或者其他工具打开,然后在相应的程序包中找info.plist,打开后ctrl+f搜索:CFBundleIdentifier,在CFBundleIdentifier下面就是包名。//mac截图:command+shift+4 鼠标拖动就可以选择要的图command+shift+3 截取全屏//把.app打包成.ipa文件:打开iTunes,然后把.app拖进去,选择在Finder中查看,该文件就变成了.ipa文件啦
5 总结
通过上面的实践会发现,IOS 使用 Java + testng +maven + appium 进行自动化测试和 Android 十分相似,唯一区别就是 IOS 必须使用 mac 进行操作,需要具备一定的 mac 使用基础;其他在自动化测试脚本编写方面和 Android 是完全一样的,具体可以参见我以前写的《Saucelabs+Java+TestNG+Appium+Maven+Git+Jenkins+ReportNG for Android 自动化测试》。
- Java + testng +maven + appium for IOS 自动化测试
- Saucelabs+Java+TestNG+Appium+Maven+Git+Jenkins+ReportNG for Android 自动化测试
- 基于 Appium + testNG + Java + maven 适用于Android、iOS自动化测试框架
- SVN+Jenkins+Maven+Appium+TestNG+ReportNG 实战 Android 自动化测试
- SVN+Jenkins+Maven+Appium+TestNG+ReportNG 实战 Android 自动化测试
- SVN+Jenkins+Maven+Appium+TestNG+ReportNG 实战 Android 自动化测试
- SVN+Jenkins+Maven+Appium+TestNG+ReportNG 实战 Android 自动化测试
- SVN+Jenkins+Maven+Appium+TestNG+ReportNG 实战 Android 自动化测试
- Appium IOS 自动化测试
- APPIUM+JAVA自动化测试
- Selenium+Java+Appium+TestNg环境搭建——Web自动化测试与HTML5测试
- Selenium+Java+Appium+TestNg环境搭建——Web自动化测试与HTML5测试(2)
- Selenium+Java+Appium+TestNg环境搭建——Web自动化测试与HTML5测试(3)
- Selenium+Java+Appium+TestNg环境搭建——Web自动化测试与HTML5测试(4)
- [Android测试] AS+Appium+Java+Win 自动化测试之四: 单元测试框架和TestNg
- Appium IOS 自动化测试初探
- Python + Appium+ IOS自动化测试
- Appium+Robotframework iOS自动化测试
- 1路AD数码管显示
- 学习docker遇到的问题
- 基于腾讯COS对象存储SDK使用Python编写的文件上传工具第二版
- 3分钟实现iOS语言本地化/国际化(图文详解)
- python 文件、文件夹操作方法总结
- Java + testng +maven + appium for IOS 自动化测试
- linux下ffmpeg
- Sequence在Oracle中的使用
- oracle 分页sql语句的深入理解
- Python爬虫抓取百度搜索图片
- Linux学习之——常用网络测试命令
- Java_温故而知新
- Java常用对象------日期(一)
- ejs简单上手实现一个 <%- %>