想在jenkins中,自动定时启动appium服务,shell命令已准备如下:

BUILD_ID=dontKillMe
ps -ef |grep appium |grep -v grep |awk '{print $2}' |xargs kill -
echo "" > appium.log
nohup appium --address 127.0.0.1 --port --session-override --platform-name Android --platform-version --automation-name Appium --log-timestamp --local-timezone --no-reset >> appium.log >&&

其中,nohup 是后台启动命令

清理进程: ps -ef |grep appium |grep -v grep |awk '{print $2}' |xargs kill -9  如果appium服务已经启动,就杀死该进程

appium服务:appium --address 127.0.0.1 --port 4723 --session-override --platform-name Android --platform-version 25 --automation-name Appium --log-timestamp --local-timezone --no-reset
保存为日志文件:>> appium.log

2>&1  错误日志也输入appium.log文件

最后一个 & :把命令丢在后台执行

在jenkins执行后,无法启动appium。是由于jenkins执行完命令后,又马上杀死这个命令进程,需要添加一行命令:BUILD_ID=dontKillMe

jenkins执行下构建,在构建目录会生成一个appium.log 目录,appium服务运行的日志都保存在这个文件中。

如果出现jenkins 执行shell 无法启动,那就把上面的命令保存为shell .sh脚本,在jenkins 执行该脚本也能正常启动appium

有时候appium 还没有启动就开始执行测试用例,导致用例执行不成功,最后加了个while循环,确认下appium 启动成功后再执行用例,

#!/bin/bash
ps -aef |grep appium
rm -rf appium.log
touch appium.log appium_log_content=`cat appium.log`
while [ ${#appium_log_content} -le ]; do
appium_log_content=`cat appium.log`
/Users/pub_pawf_autotest/autoconf/bin/start_appium.sh
echo "appium still not started!"
sleep
done
ps -aef |grep appium
cat appium.log
sleep

jenkins执行启动结果如下:

构建中 在工作空间 /Users/pub_pawf_autotest/.jenkins_8090/workspace/start_appium 中
[start_appium] $ /bin/bash /Users/pub_pawf_autotest/env/apache-tomcat-8.5.30-8090/temp/jenkins4264455098456018568.sh
1400560847 19226 1 0 4:41下午 ttys001 0:02.09 node /usr/local/bin/appium --address 127.0.0.1 --port 4723 --session-override --platform-name Android --platform-version 25 --automation-name Appium --log-timestamp --local-timezone --no-reset
1400560847 19280 19278 0 4:42下午 ttys001 0:00.00 grep appium
appium still not started!
appium still not started!
1400560847 19317 1 0 4:42下午 ttys001 0:01.91 node /usr/local/bin/appium --address 127.0.0.1 --port 4723 --session-override --platform-name Android --platform-version 25 --automation-name Appium --log-timestamp --local-timezone --no-reset
1400560847 19322 19278 0 4:42下午 ttys001 0:00.00 grep appium
Finished: SUCCESS

jenkins启动appium服务的更多相关文章

  1. appium--python启动appium服务

    前戏 前面我们都是在cmd下通过输入appium加端口号来启动服务的,在我们做自动化的时候,我们当然不希望我们手动启动appium服务,而是希望通过脚本自动启动appium服务. 我们可以使用subp ...

  2. 通过代码启动appium服务

    如果选择npm安装的最新版appium 1.8.0以上版本,启动appium的时候,你会发现无法使用Node.js命令 这里给出两种方法来启动appim: 方法一: /** * 使用AppiumSer ...

  3. 命令行启动appium服务

    Android终端 appium --avd test -a 127.0.0.1 -p 4723 --language "zh_CN" --locale "CN" ...

  4. Appium+Python app自动化测试之脚本启动和停止Appium服务

    研究了一段时间的Appium android app的自动化测试,工作中需要连接多台手机终端同时执行测试用例,我实现的方式是获取用例中需要执行用例的设备id个数以及实际连接到的设备数(通过adb de ...

  5. 启动多个appium服务(同时运行多台设备)

    准备: 一台真机一台模拟器(使用的是“夜神模拟器”) 先查看是否检测到设备  adb devices    由上图可看出没有检测到模拟器(夜神模拟器已开启) 可通过以下配置完成: 第一步:找到adb的 ...

  6. appium+python自动化60-windows上同时启动多个appium服务,让多个android机器并行运行

    前言 做android自动化的时候,启动一个appium服务,只能匹配一个手机去自动化执行.有时候想同一套代码,可以在不同的手机上执行,测下app在不同手机上兼容性. 这就需要启动多个appium服务 ...

  7. Appium+python自动化(三十五)- 命令启动appium之 appium服务命令行参数(超详解)

    简介 前边介绍的都是通过按钮点击启动按钮来启动appium服务,有的小伙伴或者童鞋们乍一听可能不信,或者会问如何通过命令行启动appium服务呢?且听宏哥一一道来. 一睹为快 其实相当的简单,不看不知 ...

  8. Appium+python自动化(三十六)- 士兵突击许三多 - 多个appium服务启动,多个设备启动,多进程并发启动设备-并发测试 - 上(超详解)

    简介 前面课程只是启动了单个appium服务,只能控制单台设备.如果需要针对多台设备测试那么该如何处理?而且发现群里的小伙伴们也在时不时地在讨论这个问题,想知道怎么实现的,于是宏哥就决定写一片这样的文 ...

  9. Appium+python自动化(三十七)- 士兵突击许三多 - 多个appium服务启动,多个设备启动,多进程并发启动设备-并发测试 - 下(超详解)

    简介 接着上一篇继续看一下如何并发测试以及并发测试的过程中,可能遇到的问题,在这里宏哥把宏哥遇到的和小伙伴或者童鞋们,一起分享一下. Appium端口检测 问题思考 经过前面学习,我们已经能够使用py ...

随机推荐

  1. 设计模式 - 模板方法模式(template method pattern) 排序(sort) 具体解释

    模板方法模式(template method pattern) 排序(sort) 具体解释 本文地址: http://blog.csdn.net/caroline_wendy 參考模板方法模式(tem ...

  2. Session Alerts

    To create alerts for specific sessions, add rules using FiddlerScript. For example: Play a sound whe ...

  3. node中__dirname、__filename、process.cwd()表示的路径

    直接上结论:__dirname 表示当前文件所在的目录的绝对路径__filename 表示当前文件的绝对路径module.filename ==== __filename 等价process.cwd( ...

  4. Java多线程之锁优化策略

    转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/6561264.html  锁的优化策略 编码过程中可采取的锁优化的思路有以下几种: 1:减少锁持有时间 例如:对 ...

  5. 【BI】商务智能

    BI的定义 商务智能BI (Business Intellignece) 商务智能是涵盖性术语,包含框架.工具.数据库.分析工具.应用和方法.商务智能的主要目标是实现数据的交互,实现对数据的操作,供管 ...

  6. python 面向对象编程案例01

    # -*- coding: utf-8 -*- #python 27 #xiaodeng #面向对象编程案例01 class Behave(): def __init__(self,name): se ...

  7. codevs 1862 最长公共子序列(求最长公共子序列长度并统计最长公共子序列的个数)

    题目描述 Description 字符序列的子序列是指从给定字符序列中随意地(不一定连续)去掉若干个字符(可能一个也不去掉)后所形成的字符序列.令给定的字符序列X=“x0,x1,…,xm-1”,序列Y ...

  8. AngleSharp 的Dom 选择器

    AngleSharp https://developer.mozilla.org/en-US/docs/Web/API/Element/querySelectorAll Element.querySe ...

  9. 解决 Class not found和Base table or view not found: 1051 问题

    1.解决class not found的方法: 如果你用的是homestead虚拟机,那么,你要到虚拟机下执行: composer dump-autoload 2.解决Base table or vi ...

  10. Android webView打不开baidu网页的解决办法

    有时候会出现一些很奇怪的问题,比如,webview就是打不开百度网页,那么 加上这句就好了(备忘): WebSettings webSettings = webview.getSettings(); ...