学会使用python启动多个appium server,然后获取

2019-12-17  本文已影响0人  呼啦小姐

思路如下:
第一步,搭建appium环境,可参考博客 移动端自动化测试-Windows-Android-Appium环境搭建 (我之前已搭建好环境,忽略了第一步)
第二步,使用USB线连接PC端和要测试的设备
第三步,获取设备信息,即设备ID,设备版本号,设备的appActivity。可参考我之前的一篇文章 获取设备信息
第四步,创建start_appium.bat文件,用来存储启动appium server的指令,文件内容为空
第五步,编写脚本实现

项目路径如下:


项目结构.png

文件名:AppiumService.py,代码如下:

import os
from time import sleep
from appium import webdriver
from com.appium.product.GetDevicesMsgs import GetDeviceMsgs

# 开启appium server
def start_server(IP, PORT):
    text = "@echo off\ntitle start Appium Server {}\ncmd /c \"appium -a {} -p {} --session-override\"".format(IP, IP, PORT)
    ff = open('start_appium.bat', 'w') #以覆盖的形式写入
    ff.write(text)
    ff.close()
    os.system('start start_appium.bat')
    sleep(15)

def desired_capabilities(info):
    info = info
    #定义appium参数
    desired_caps = {
        'platformName': 'Android',
        'platformVersion': info['deviceVersion'],
        'deviceName': info['deviceId'],
        # 因为我们的业务,所有的APP的报名都是一样的,所以这里是写死的,比如com.****.***
        'appPackage': '替换为自己APP的包名',
        'appActivity': info['appActivity'],
        # 不要在会话前重置应用状态
        "noReset": True,
        'appWaitPackage': '替换为自己APP的包名',
        'newCommandTimeout': 1800,
    }
    return desired_caps

def get_driver():
    # 获取设备ID
    ids = GetDeviceMsgs().getDeviceIds()
    # 获取设备信息 即设备ID,设备版本号,设备的appActivity
    deviceinfo_info = GetDeviceMsgs().getDeviceMsgs(ids)
    print("deviceinfo_info is ", deviceinfo_info)
    # 存储设备的driver集合
    driver_cap = {}
    num = 5
    for info in deviceinfo_info:

        IP = "127.0.0.{}".format(num)
        if len(str(num)) == 1:
            PORT = "472{}".format(num)
        else:
            PORT = "47{}".format(num)
        start_server(IP, PORT)
        # 定义appium参数
        desired_caps = desired_capabilities(info)
        # 获取设备driver
        driver = webdriver.Remote('http://{}:{}/wd/hub'.format(IP, PORT), desired_caps)
        driver.implicitly_wait(15)
        print("driver is ", driver)
        # 将设备driver存储在字典中,key值为设备的deviceId
        driver_cap[info['deviceId']] = driver
        num = num + 2
    return driver_cap


if __name__ == '__main__':
    get_driver()

上一篇下一篇

猜你喜欢

热点阅读