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()
    转载请附上原文链接。
  • 相关阅读:
    LeetCode 79. 单词搜索
    LeetCode 1143. 最长公共子序列
    LeetCode 55. 跳跃游戏
    LeetCode 48. 旋转图像
    LeetCode 93. 复原 IP 地址
    LeetCode 456. 132模式
    LeetCode 341. 扁平化嵌套列表迭代器
    LeetCode 73. 矩阵置零
    LeetCode 47. 全排列 II
    LeetCode 46. 全排列
  • 原文地址:https://www.cnblogs.com/bugbreak/p/12553638.html
Copyright © 2011-2022 走看看