jenkins + UIAutomation 自动化脚本运行app
这里,我在jenkins上配置了子节点,脚本中包含了在master还是在slave上执行脚本的判断脚本
SERVER_HOME=$JENKINS_HOME/jobs/$JOB_NAME
ATTACHED_PROJECT=iOS_Mobile_Projectecho "node_name = $NODE_NAME, node_labels = $NODE_LABELS"
echo "master_ip = $MASTER_IP, mster_user = $MASTER_USER"
echo "excutor_number = $EXECUTOR_NUMBER"if [ "$NODE_NAME" != master ]; thenWORKSPACE_COMMON=$WORKSPACE/workspaceecho "run in slave($NODE_LABELS)"rm -f $WORKSPACE_COMMON/*.ipascp $MASTER_USER@$MASTER_IP:$SERVER_HOME/../$ATTACHED_PROJECT/workspace/build/Debug-iphoneos/*.ipa $WORKSPACE_COMMON/
elseWORKSPACE_COMMON=$WORKSPACEcp $JENKINS_HOME/jobs/$ATTACHED_PROJECT/workspace/build/Debug-iphoneos/*.ipa $WORKSPACE_COMMON/
fi
上面脚本的功能:
判断是否是master节点,是的话就拷贝本地的ipa到jenkins的workspace目录;不是的话就从master机器的ipa包目录把ipa包拷贝到slave机器的workspace目录
执行脚本
SERVER_HOME=$JENKINS_HOME/jobs/$JOB_NAME# not master node, need to download scripts from master
if [ "$NODE_NAME" != master ]; thenWORKSPACE_COMMON=$WORKSPACE/workspace
elseWORKSPACE_COMMON=$WORKSPACE
fi#slave paths
TUNEUP_HOME=$WORKSPACE_COMMON/../../tuneup_engine
APP_PATH=$WORKSPACE_COMMON/build/Debug-iphoneos/xxx.app
AUTO_TEST_SCRIPT_DIR=$WORKSPACE_COMMON/scripts
AUTO_TEST_REPORT_DIR=$WORKSPACE/reports
REPORT_FILE_DIR=$AUTO_TEST_REPORT_DIR/$BUILD_NUMBERif [ ! -d "$AUTO_TEST_SCRIPT_DIR" ]; thenmkdir -p $AUTO_TEST_SCRIPT_DIR
fiif [ ! -d "$AUTO_TEST_REPORT_DIR" ]; thenmkdir -p $AUTO_TEST_REPORT_DIR
fiif [ ! -d "$REPORT_FILE_DIR" ]; thenmkdir -p $REPORT_FILE_DIR
fi# not master node, need to download scripts from master
if [ "$NODE_NAME" != master ]; then#copy tuneup_engine to slaveecho "run in slave($NODE_LABELS)"rm -f $AUTO_TEST_SCRIPT_DIR/*scp -r $MASTER_USER@$MASTER_IP:$SERVER_HOME/workspace/scripts $AUTO_TEST_SCRIPT_DIR/../
fiset +e
INSTRUMENTS_TRACE_FILE="Instruments.trace"
SCREENSHOTS_DIR="Run 1"cd $AUTO_TEST_SCRIPT_DIR
for script_file in `ls test*.js`
do echo "$script_file"$TUNEUP_HOME/test_runner/run $APP_PATH $script_file $REPORT_FILE_DIR -x -v -c -d dynamicif [ -d "$INSTRUMENTS_TRACE_FILE" ]; thenmv $INSTRUMENTS_TRACE_FILE Instruments_$script_file.tracefiif [ -d "$SCREENSHOTS_DIR" ]; thenmv $SCREENSHOTS_DIR Screenshots_$script_filefi
done
set -e
上面脚本的功能:
创建测试报告输出目录
判断是否是slave节点,是的话就从master节点拷贝脚本文件到slave节点
使用tuneup脚本引擎执行脚本,并输出脚本执行结果
jenkins + UIAutomation 自动化脚本运行app相关推荐
- Jenkins构建自动化脚本执行无界面解决方法
场景: jenkins构建selenium自动化用例的时候,会有jenkins自带服务后台运行自动化脚本,可无界面运行IE.Chrome.Firefox. 然而运行IE浏览器时候(IE比较特殊),Je ...
- jenkins构建自动化脚本遇到的问题及解决方式
jenkins配置: 1.构建一个自由风格的项目填写构建步骤 例如:D:\Python3.7\python.exe (python安装路径)C:\Users\P310\Desktop\NewUITes ...
- UI自动化脚本运行找不到元素解决方案
UI自动化解密之元素定位后为啥放在脚本里面找不到 我们是否在浏览器F12下面,进行右键Copy Element Xpath/Css 时,放在浏览器里面直接就能够正确查找,为什么放在脚本里面就找不到了呢 ...
- 自动化脚本编程框架(代码篇)
书接上文,本篇以C语言为例,介绍一下自动化脚本的编程框架(篇末有整体代码). 框架的中心思想: 以函数指针形式,从脚本数组中按顺序依次执行脚本函数并判断执行结果. 若判断结果执行正确则指针向后偏移到下 ...
- linux执行shell过程日志,Android之在linux终端执行shell脚本直接打印当前运行app的日志...
1.问题 我们一般很多时候会需要在ubuntu终端上打印当前运行app的日志,我们一般常见的做法是 1).获取包名 打开当前运行的app,然后输入如下命令,然后在第一行TASK后面的就可以看到包名 a ...
- #Android--无需 ROOT 实现自动化脚本,让你的手机拥有无穷的可能(非宣传 APP)
#Android--无需 ROOT 实现自动化脚本,让你的手机拥有无穷的可能(非宣传 APP) 引言 下载工具 写在最后 引言 在上一期 #Android–使用Android手机运行一个完整Ubunt ...
- 【移动测试ios】编写和运行自动化脚本
[移动测试iOS]编写和运行自动化脚本 准备工作 编写和运行自动化脚本 准备工作 1.使用Xcode打开要运行的程序 2.选择将要运行的程序和模拟器设备 3.command+r运行 4.打开并启动ap ...
- Linux下运行python自动化脚本
前言 确认搭建自动化环境的服务是哪一台,确定后拿到服务ip.用户名.密码连接上服务即可开始以下步骤 一.python3安装 1.yum安装依赖包 yum -y install zlib-devel b ...
- pythonapp自动化_移动App Appium自动化测试教程Appium+Python 【2018年新】
资源介绍 资源名称:移动App Appium自动化测试教程Appium+Python [2018年新] 资源目录: 第一章:App自动化测试概述 1-1 Appium自动化课程简介 1-2 课程大纲 ...
最新文章
- 大规模业务服务器开发总结
- 谷歌“夜莺计划”曝光:秘密采集数百万医疗隐私数据!医生患者毫不知情
- 使用训练数据结构代替注意力机制
- LUOGU 9月 月赛
- Android自动播放下一曲,环信Android自动播放下一条语音
- 移动架构11_建造者模式
- 零基础也能学会的——用Python制作超级玛丽小游戏
- 基于springboot+mybatis设备管理后台,可直接上线项目!
- CRMEB知识付费系统安装搭建【常见问题-14.安装无法修改写入权限】
- 【电商运营】京东数字化运营【流量篇】
- 手残转化了动态磁盘后如何转化回基本磁盘
- django从零开始引入bootstrap模板
- 水塘抽样算法(Reservoir Sampling Algorithm)
- java 检查日期是否正确_Java检查日期格式是否正确
- Python 基于tkinter的GUI编程
- 模板类的动态模板特化
- 小心!基于UEFI引导的病毒,重装系统也清除不了
- 《计算机科学与工程导论:基于IoT和机器人的可视化编程实践方法第2版》一2.3 VIPLE的使用...
- 数据库专升本考试大纲
- 计算机组织与结构poc,CPU漏洞原理详解以及POC代码分享