美文网首页
学会使用python启动多个appium server,然后获取

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

作者: 呼啦小姐 | 来源:发表于2019-12-17 17:46 被阅读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()
    
    

    相关文章

      网友评论

          本文标题:学会使用python启动多个appium server,然后获取

          本文链接:https://www.haomeiwen.com/subject/ncxenctx.html