appium+python自动化62-命令行启动和关闭appium服务

前言

做app自动化测试比较繁琐的一点是每次都要去启动appium服务,然后跑完之后关闭appium服务。虽然在cmd里面可以使用命令行的appium服务版本,打开cmd启动还是不太方便
不能做到真正自动化开启和关闭。为了解决这个问题,可以用python写个脚本去开启和关闭appium服务

启动appium服务

appium的命令行启动方式参考这篇【appium+python自动化59-appium命令行参数】
python执行cmd指令,可以使用os.system()方法,为了防止重复启动服务,可以先判断该端口是不是已经启动了,写个判断函数

# coding:utf-8
import os
import time

def start_appium(port=4723, udid="", a="127.0.0.1"):
    '''
    执行cmd指令,启动appium服务
    '''
    if not is_appium_start(port):
        if udid == "":
            os.system("appium -a %s -p %s --no-reset" %(a, port))
        else:
            os.system("appium -a %s -p %s -U %s --no-reset" %(a, port, udid))
    else:
        pass

def is_appium_start(port=4723):
    '''判断端口是否已经启动'''
    r = os.popen('netstat -ano | findstr "%s" ' % port)
    time.sleep(2)
    t = r.read()
    if "LISTENING" in t:
        print("appium服务已经启动:%s"%t)
        return True
    else:
        return False

os.popen()跟os.system()都是执行cmd指令,不同的是os.popen()可以获取到cmd控制台输出的内容

杀掉appium进程

先在4725端口启动appium服务

C:\Users\dell>appium -p 4725
(node:3704) [DEP0005] DeprecationWarning: Buffer() is deprecated due to security and usability issues. Please use the Buffer.alloc(), Buffer.allocUnsafe(), or Buffer.from() methods instead.
[Appium] Welcome to Appium v1.9.0
[Appium] Non-default server args:
[Appium]   port: 4725
[Appium] Appium REST http interface listener started on 0.0.0.0:4725

根据端口号查pid:netstat -aon|findstr 端口号

C:\Users\dell>netstat -aon|findstr 4725
  TCP    0.0.0.0:4725           0.0.0.0:0              LISTENING       14528

根据查询到的pid强行终止进程:taskkill /f /pid pid号

C:\Users\dell>taskkill /f /pid 14528
成功: 已终止 PID 为 14528 的进程。

python代码实现

# 接着上面代码
def kill_appium(port=4723):
    '''杀掉端口为port的进程'''
    p = os.popen('netstat -ano | findstr "%s" ' % port)  # 根据端口查pid
    t = p.read()
    if "LISTENING" in t:
        s = str(t).split(" ")
        s1 = [i for i in s if i != '']
        pid = s1[-1].replace("\n", "")
        print("端口 %s 运行 pid: %s" % (port, pid))
        os.system("taskkill /f /pid %s" % pid)
        print("强行终止:taskkill /f /pid %s" % pid)
    else:
        pass

if __name__ == "__main__":
    start_appium(port=4723, udid="", a="127.0.0.1")
    is_appium_start(port=4723)
    kill_appium(4723)

上海-悠悠 QQ交流群:330467341

猜你喜欢

转载自www.cnblogs.com/yoyoketang/p/9818991.html