zoukankan      html  css  js  c++  java
  • python+Appium自动化:python多线程多并发启动appium服务

    Python启动Appium 服务

    使用Dos命令或者bat批处理来手动启动appium服务,启动效率低下。如何将启动Appium服务也实现自动化呢?

    这里需要使用subprocess模块,该模块可以创建新的进程,并且连接到进程的输入、输出、错误等管道信息,并且可以获取进程的返回值。subprocess模块官方文档

    场景

    使用Python启动2台appium服务,端口配置如下:

    • Appium服务器端口:4723,bp端口为4724
    • Appium服务器端口:4725,bp端口为4726

    说明:bp端口( –bootstrap-port)是appium和设备之间通信的端口,如果不指定到时无法操作多台设备运行脚本

    工程文件中新建一个文件夹

    新建multi_subprocess.py

    # -*- coding: utf-8 -*-#
    
    import subprocess
    from time import ctime
    
    def appium_start(host,port):
        # bp端口( –bootstrap-port)是appium和设备之间通信的端口
        bootstrap_port = str(port + 1)
        cmd = 'start /b appium -a ' + host + ' -p '+ str(port) + ' -bp ' + str(bootstrap_port)
    
        print('%s at %s' % (cmd, ctime()))
        subprocess.Popen(cmd, shell=True, stdout=open('../appiumlog/'+str(port)+'.log', 'a'), stderr=subprocess.STDOUT)
    
    if __name__ == '__main__':
        host = '127.0.0.1'
        port = 4723
        appium_start(host,port)
    

    效验是否成功 :

    1.cmd中输入netstat -ano | findstr 端口号(4723)

    2. 在appiumlog路径中生成4723.log日志文件

    终止appium服务

    taskkill -f -pid appium进程,如下:

     多个appium服务启动

    if __name__ == '__main__':
        host = '127.0.0.1'
        for i in range(2):
            port=4723+2*i
            appium_start(host,port)

    多进程并发启动appium服务

    上面还不是并发执行启动appium,因此需要使用多进程来实现并发启动。
    同样需要引入multiprocessing多进程模块。

    muti_appium_sync.py

    import multiprocessing
    import subprocess
    from time import ctime
    
    def appium_start(host, port):
    
        bootstrap_port = str(port + 1)
        cmd = 'start /b appium -a ' + host + ' -p ' + str(port) + ' --bootstrap-port ' + str(bootstrap_port)
    
        print('%s at %s' % (cmd, ctime()))
        subprocess.Popen(cmd, shell=True,stdout=open('./appiumlog/'+str(port)+'.log', 'a'), stderr=subprocess.STDOUT)
    
    
    #构建appium进程组
    appium_process=[]
    
    #加载appium进程
    for i in range(2):
        host='127.0.0.1'
        port = 4723 + 2 * i
        appium=multiprocessing.Process(target=appium_start, args=(host, port))
        appium_process.append(appium)
    
    
    if __name__ == '__main__':
        #并发启动appium服务
        for appium in appium_process:
            appium.start()
        for appium in appium_process:
            appium.join()
    转载请附上原文链接。
  • 相关阅读:
    图形2d,3d加速简介
    [转]startx启动过程分析
    initrd.img、vmlinux和 vmlinuz
    TSQL建主键索引语句 / 外键
    ASP.NET MVC 2.0在WinXP IIS6下的部署
    update中加入select
    Request
    jqGrid使用总结
    Jquery 表单取值赋值 处理返回json数据
    108个搞笑经典短句(转)
  • 原文地址:https://www.cnblogs.com/bugbreak/p/12553638.html
Copyright © 2011-2022 走看看