技术心得

python+appium+夜神模拟器+结合yaml配置文件实现并发采集任务。

 代码如下

import subprocess
from os import system
from appium import webdriver
import time
import yaml
import os

from selenium.webdriver.support.wait import WebDriverWait

from base.base_root import BaseRoot


class BaseDriver(object):

    def __init__(self, device_info):
        self.device_info = device_info

    def release_port(self,port):
        """释放指定的端口"""
        cmd_find = 'netstat -aon | findstr {}'.format(port)  # 查找对应端口的pid
        # 返回命令执行后的结果
        result = os.popen(cmd_find).read()
        if str(port) and 'LISTENING' in result:
            # 获取端口对应的pid进程
            i = result.index('LISTENING')
            start = i + len('LISTENING') + 7
            end = result.index('\n')
            pid = result[start:end]
            cmd_kill = 'taskkill -f -pid %s' % pid  # 关闭被占用端口的pid
            os.popen(cmd_kill)
            print(f'释放进程端口:{port}')
        else:
            print('port %s is available !' % port)
    def restart_start_appium(self, port=4723, udid=""):
        print('netstat -ano | findstr "%s" ' % port)
        a = os.popen('netstat -ano | findstr "%s" ' % port)
        time.sleep(2)
        t1 = a.read()
        if "LISTENING" in t1:
            self.release_port(port)

        # 启动appium服务
        print("appium -p %s -bp %s -U %s --no-reset --session-override" % (port, port, udid))
        #os.system("appium -p %s -bp %s -U %s --no-reset --session-override" % (port, port, udid))

        bootstrap_port = port
        host = '127.0.0.1'
        # cmd命令
        cmd = 'start /b appium -a ' + host + ' -p ' + str(port) + ' -bp ' + str(bootstrap_port)+' -U '+ str(udid)+' --no-reset --session-override '
        print("%s at %s " % (cmd, time.ctime()))
        # cmd 需要执行的shell命令
        showtime = time.strftime('%Y-%m-%d',time.localtime(time.time()))
        curpath = BaseRoot.root_path
        folder = f"/log/appium_log_{showtime}/"
        if not os.path.exists(curpath + f'/{folder}/'):
            os.makedirs(curpath + f'/{folder}/')
        #showtime = time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time()))
        showtime = time.strftime('%Y-%m-%d-%H',time.localtime(time.time()))
        subprocess.Popen(cmd, shell=True,stdout=open(curpath + f'/{folder}/' + f'{port}.log', 'w', encoding='utf8'),stderr=subprocess.STDOUT)
        #subprocess.Popen(cmd, shell=True)

        time.sleep(1)
    def start_appium(self, port=4723, udid=""):
        print('netstat -ano | findstr "%s" ' % port)
        a = os.popen('netstat -ano | findstr "%s" ' % port)
        time.sleep(2)
        t1 = a.read()
        if "LISTENING" in t1:
            print("appium服务已经启动:%s" % t1)
        else:
            # 启动appium服务
            print("appium -p %s -bp %s -U %s --no-reset --session-override" % (port, port, udid))
            #os.system("appium -p %s -bp %s -U %s --no-reset --session-override" % (port, port, udid))

            bootstrap_port = port
            host = '127.0.0.1'
            # cmd命令
            cmd = 'start /b appium -a ' + host + ' -p ' + str(port) + ' -bp ' + str(bootstrap_port)+' -U '+ str(udid)+' --no-reset --session-override '
            print("%s at %s " % (cmd, time.ctime()))
            # cmd 需要执行的shell命令
            showtime = time.strftime('%Y-%m-%d',time.localtime(time.time()))
            curpath = os.path.dirname(os.path.realpath(__file__))
            folder = f"{curpath}/appium_log_{showtime}"
            if not os.path.exists(folder):
                os.makedirs(folder)
            #showtime = time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time()))
            showtime = time.strftime('%Y-%m-%d-%H',time.localtime(time.time()))
            subprocess.Popen(cmd, shell=True,stdout=open(curpath + f'/appium_log/' + f'{port}.log', 'w', encoding='utf8'),stderr=subprocess.STDOUT)
            #subprocess.Popen(cmd, shell=True)

            time.sleep(1)

    def get_desired_caps(self, devicesName='62001'):
        '''
        从yaml读取desired_caps配置信息
        参数name:设备名称,如:夜神/雷电
        :return: desired_caps字典格式
        '''
        curpath = os.path.dirname(os.path.realpath(__file__))
        yamlpath = os.path.join(curpath, "ddmc.yaml")
        print("配置地址:%s" % yamlpath)
        f = open(yamlpath, "r", encoding="utf-8")
        a = f.read()
        f.close()
        # 把yaml文件转字典
        d = yaml.load(a, Loader=yaml.FullLoader)
        for i in d:
            if devicesName in i["desc"]:

                #print(i)
                # 启动服务
                #devicesName = i['desired_caps']['udid']
                connect_devicesName = f"127.0.0.1:{devicesName}"

                if i['desired_caps']['zhenji'] == 1:
                    connect_devicesName = i['desired_caps']['udid']


                print("连接设备:%s" %connect_devicesName)

                if i['desired_caps']['zhenji'] == 0:
                    i['port'] = int(devicesName)-20000
                i['desired_caps']['udid'] =connect_devicesName
                i['desired_caps']['deviceName'] =connect_devicesName
                self.restart_start_appium(port=i['port'], udid=connect_devicesName)
                return (i['desired_caps'], i['port'])

    def get_base_driver(self) -> (webdriver,dict):
        """获取driver"""
        # 配置参数
        print("准备启动连接: "+self.device_info)
        desired_caps = self.get_desired_caps(self.device_info)
        root_path = BaseRoot.root_path
        root_path = root_path.replace('\\','/')


        # 设置谷歌驱动地址
        if desired_caps[0]['zhenji'] == 1:
            chromedriverpath = root_path + 'vendor/'+desired_caps[0]['chromedriverpath']
        else:
            chromedriverpath = root_path + 'vendor/chromedriver_win32_v92.0.4515.43.exe'

        #chromedriverpath = os.getcwd().replace('\\','/')+'/chromedriver_win32_v92.0.4515.43.exe'

        desired_caps[0]['chromedriverExecutable'] = chromedriverpath
        desired_caps[0]['chromeOptions'] = {'androidProcess': 'com.tencent.mm:appbrand0'}
        self.driver = webdriver.Remote('http://127.0.0.1:%s/wd/hub' % desired_caps[1], desired_caps[0])
        print("启动微信应用程序1")

        ''''
        self.driver.press_keycode(3)
        time.sleep(19)
        self.driver = webdriver.Remote('http://127.0.0.1:%s/wd/hub' % desired_caps[1], desired_caps[0])
        print("启动微信应用程序1")
        '''


        system(f"title {self.device_info}")

        time.sleep(3)
        self.wait = WebDriverWait(self.driver, 300)
        return (self.driver,desired_caps[0])


if __name__ == '__main__':
    BaseDriver("夜神62001").get_base_driver()

模拟器的配置文件如下:

- desc: 设备名称_夜神62001,appium启动服务端口号_42009
  port: 42009
  desired_caps:
    platformName: Android
    deviceName: FA79F1A08850
    unicodeKeyboard: !!bool True
    resetKeyboard: !!bool True
    noReset: !!bool True
    udid: FA79F1A08850
    platformVersion: 9.1.2
    chromedriverpath: chromedriver_win32_v107.0.5304.62.exe
    zhenji: 1
    appPackage: com.tencent.mm
    appActivity: .ui.LauncherUI
- desc: 设备名称_夜神62025,appium启动服务端口号_42025
  port: 42025
  desired_caps:
    platformName: Android
    deviceName: 127.0.0.1:62025
    unicodeKeyboard: !!bool True
    resetKeyboard: !!bool True
    noReset: !!bool True
    newCommandTimeout: 6000
    udid: 127.0.0.1:62025
    platformVersion: 7.1.2
    chromedriverpath: chromedriver_win32_v92.0.4515.43.exe
    zhenji: 0
    appPackage: com.tencent.mm
    appActivity: .ui.LauncherUI
- desc: 设备名称_夜神62026,appium启动服务端口号_42026
  port: 42026
  desired_caps:
    platformName: Android
    deviceName: 127.0.0.1:62026
    unicodeKeyboard: !!bool True
    resetKeyboard: !!bool True
    noReset: !!bool True
    newCommandTimeout: 6000
    udid: 127.0.0.1:62026
    platformVersion: 12.0.0
    chromedriverpath: chromedriver_win32_v92.0.4515.43.exe
    zhenji: 0
    appPackage: com.tencent.mm
    appActivity: .ui.LauncherUI
- desc: 设备名称_夜神62027,appium启动服务端口号_42027
  port: 42027
  desired_caps:
    platformName: Android
    deviceName: 127.0.0.1:62027
    unicodeKeyboard: !!bool True
    resetKeyboard: !!bool True
    noReset: !!bool True
    newCommandTimeout: 6000
    udid: 127.0.0.1:62027
    platformVersion: 7.1.2
    chromedriverpath: chromedriver_win32_v92.0.4515.43.exe
    zhenji: 0
    appPackage: com.tencent.mm
    appActivity: .ui.LauncherUI
- desc: 设备名称_夜神62028,appium启动服务端口号_42028
  port: 42028
  desired_caps:
    platformName: Android
    deviceName: 127.0.0.1:62028
    unicodeKeyboard: !!bool True
    resetKeyboard: !!bool True
    noReset: !!bool True
    newCommandTimeout: 6000
    udid: 127.0.0.1:62028
    platformVersion: 7.1.2
    chromedriverpath: chromedriver_win32_v92.0.4515.43.exe
    zhenji: 0
    appPackage: com.tencent.mm
    appActivity: .ui.LauncherUI
- desc: 设备名称_夜神62029,appium启动服务端口号_42029
  port: 42029
  desired_caps:
    platformName: Android
    deviceName: 127.0.0.1:62029
    unicodeKeyboard: !!bool True
    resetKeyboard: !!bool True
    noReset: !!bool True
    newCommandTimeout: 6000
    udid: 127.0.0.1:62029
    platformVersion: 7.1.2
    chromedriverpath: chromedriver_win32_v92.0.4515.43.exe
    zhenji: 0
    appPackage: com.tencent.mm
    appActivity: .ui.LauncherUI
- desc: 设备名称_夜神62030,appium启动服务端口号_42030
  port: 42030
  desired_caps:
    platformName: Android
    deviceName: 127.0.0.1:62030
    unicodeKeyboard: !!bool True
    resetKeyboard: !!bool True
    noReset: !!bool True
    newCommandTimeout: 6000
    udid: 127.0.0.1:62030
    platformVersion: 7.1.2
    chromedriverpath: chromedriver_win32_v92.0.4515.43.exe
    zhenji: 0
    appPackage: com.tencent.mm
    appActivity: .ui.LauncherUI
- desc: 设备名称_夜神62031,appium启动服务端口号_42031
  port: 42031
  desired_caps:
    platformName: Android
    deviceName: 127.0.0.1:62031
    unicodeKeyboard: !!bool True
    resetKeyboard: !!bool True
    noReset: !!bool True
    newCommandTimeout: 6000
    udid: 127.0.0.1:62031
    platformVersion: 7.1.2
    chromedriverpath: chromedriver_win32_v92.0.4515.43.exe
    zhenji: 0
    appPackage: com.tencent.mm
    appActivity: .ui.LauncherUI
- desc: 设备名称_夜神62032,appium启动服务端口号_42032
  port: 42032
  desired_caps:
    platformName: Android
    deviceName: 127.0.0.1:62032
    unicodeKeyboard: !!bool True
    resetKeyboard: !!bool True
    noReset: !!bool True
    newCommandTimeout: 6000
    udid: 127.0.0.1:62032
    platformVersion: 7.1.2
    chromedriverpath: chromedriver_win32_v92.0.4515.43.exe
    zhenji: 0
    appPackage: com.tencent.mm
    appActivity: .ui.LauncherUI
- desc: 设备名称_夜神62033,appium启动服务端口号_42033
  port: 42033
  desired_caps:
    platformName: Android
    deviceName: 127.0.0.1:62033
    unicodeKeyboard: !!bool True
    resetKeyboard: !!bool True
    noReset: !!bool True
    newCommandTimeout: 6000
    udid: 127.0.0.1:62033
    platformVersion: 7.1.2
    chromedriverpath: chromedriver_win32_v92.0.4515.43.exe
    zhenji: 0
    appPackage: com.tencent.mm
    appActivity: .ui.LauncherUI
- desc: 设备名称_夜神62034,appium启动服务端口号_42034
  port: 42034
  desired_caps:
    platformName: Android
    deviceName: 127.0.0.1:62034
    unicodeKeyboard: !!bool True
    resetKeyboard: !!bool True
    noReset: !!bool True
    newCommandTimeout: 6000
    udid: 127.0.0.1:62034
    platformVersion: 7.1.2
    chromedriverpath: chromedriver_win32_v92.0.4515.43.exe
    zhenji: 0
    appPackage: com.tencent.mm
    appActivity: .ui.LauncherUI
- desc: 设备名称_夜神62035,appium启动服务端口号_42035
  port: 42035
  desired_caps:
    platformName: Android
    deviceName: 127.0.0.1:62035
    unicodeKeyboard: !!bool True
    resetKeyboard: !!bool True
    noReset: !!bool True
    newCommandTimeout: 6000
    udid: 127.0.0.1:62035
    platformVersion: 7.1.2
    chromedriverpath: chromedriver_win32_v92.0.4515.43.exe
    zhenji: 0
    appPackage: com.tencent.mm
    appActivity: .ui.LauncherUI
- desc: 设备名称_夜神62036,appium启动服务端口号_42036
  port: 42036
  desired_caps:
    platformName: Android
    deviceName: 127.0.0.1:62036
    unicodeKeyboard: !!bool True
    resetKeyboard: !!bool True
    noReset: !!bool True
    newCommandTimeout: 6000
    udid: 127.0.0.1:62036
    platformVersion: 7.1.2
    chromedriverpath: chromedriver_win32_v92.0.4515.43.exe
    zhenji: 0
    appPackage: com.tencent.mm
    appActivity: .ui.LauncherUI
- desc: 设备名称_夜神62037,appium启动服务端口号_42037
  port: 42037
  desired_caps:
    platformName: Android
    deviceName: 127.0.0.1:62037
    unicodeKeyboard: !!bool True
    resetKeyboard: !!bool True
    noReset: !!bool True
    newCommandTimeout: 6000
    udid: 127.0.0.1:62037
    platformVersion: 7.1.2
    chromedriverpath: chromedriver_win32_v92.0.4515.43.exe
    zhenji: 0
    appPackage: com.tencent.mm
    appActivity: .ui.LauncherUI
- desc: 设备名称_夜神62038,appium启动服务端口号_42038
  port: 42038
  desired_caps:
    platformName: Android
    deviceName: 127.0.0.1:62038
    unicodeKeyboard: !!bool True
    resetKeyboard: !!bool True
    noReset: !!bool True
    newCommandTimeout: 6000
    udid: 127.0.0.1:62038
    platformVersion: 7.1.2
    chromedriverpath: chromedriver_win32_v92.0.4515.43.exe
    zhenji: 0
    appPackage: com.tencent.mm
    appActivity: .ui.LauncherUI
- desc: 设备名称_夜神62039,appium启动服务端口号_42039
  port: 42039
  desired_caps:
    platformName: Android
    deviceName: 127.0.0.1:62039
    unicodeKeyboard: !!bool True
    resetKeyboard: !!bool True
    noReset: !!bool True
    newCommandTimeout: 6000
    udid: 127.0.0.1:62039
    platformVersion: 7.1.2
    chromedriverpath: chromedriver_win32_v92.0.4515.43.exe
    zhenji: 0
    appPackage: com.tencent.mm
    appActivity: .ui.LauncherUI
- desc: 设备名称_夜神62040,appium启动服务端口号_42040
  port: 42040
  desired_caps:
    platformName: Android
    deviceName: 127.0.0.1:62040
    unicodeKeyboard: !!bool True
    resetKeyboard: !!bool True
    noReset: !!bool True
    newCommandTimeout: 6000
    udid: 127.0.0.1:62040
    platformVersion: 7.1.2
    chromedriverpath: chromedriver_win32_v92.0.4515.43.exe
    zhenji: 0
    appPackage: com.tencent.mm
    appActivity: .ui.LauncherUI
- desc: 设备名称_夜神62041,appium启动服务端口号_42041
  port: 42041
  desired_caps:
    platformName: Android
    deviceName: 127.0.0.1:62041
    unicodeKeyboard: !!bool True
    resetKeyboard: !!bool True
    noReset: !!bool True
    newCommandTimeout: 6000
    udid: 127.0.0.1:62041
    platformVersion: 7.1.2
    chromedriverpath: chromedriver_win32_v92.0.4515.43.exe
    zhenji: 0
    appPackage: com.tencent.mm
    appActivity: .ui.LauncherUI
- desc: 设备名称_夜神62042,appium启动服务端口号_42042
  port: 42042
  desired_caps:
    platformName: Android
    deviceName: 127.0.0.1:62042
    unicodeKeyboard: !!bool True
    resetKeyboard: !!bool True
    noReset: !!bool True
    newCommandTimeout: 6000
    udid: 127.0.0.1:62042
    platformVersion: 7.1.2
    chromedriverpath: chromedriver_win32_v92.0.4515.43.exe
    zhenji: 0
    appPackage: com.tencent.mm
    appActivity: .ui.LauncherUI
- desc: 设备名称_夜神62043,appium启动服务端口号_42043
  port: 42043
  desired_caps:
    platformName: Android
    deviceName: 127.0.0.1:62043
    unicodeKeyboard: !!bool True
    resetKeyboard: !!bool True
    noReset: !!bool True
    newCommandTimeout: 6000
    udid: 127.0.0.1:62043
    platformVersion: 7.1.2
    chromedriverpath: chromedriver_win32_v92.0.4515.43.exe
    zhenji: 0
    appPackage: com.tencent.mm
    appActivity: .ui.LauncherUI
- desc: 设备名称_夜神62044,appium启动服务端口号_42044
  port: 42044
  desired_caps:
    platformName: Android
    deviceName: 127.0.0.1:62044
    unicodeKeyboard: !!bool True
    resetKeyboard: !!bool True
    noReset: !!bool True
    newCommandTimeout: 6000
    udid: 127.0.0.1:62044
    platformVersion: 7.1.2
    chromedriverpath: chromedriver_win32_v92.0.4515.43.exe
    zhenji: 0
    appPackage: com.tencent.mm
    appActivity: .ui.LauncherUI
- desc: 设备名称_夜神62045,appium启动服务端口号_42045
  port: 42045
  desired_caps:
    platformName: Android
    deviceName: 127.0.0.1:62045
    unicodeKeyboard: !!bool True
    resetKeyboard: !!bool True
    noReset: !!bool True
    newCommandTimeout: 6000
    udid: 127.0.0.1:62045
    platformVersion: 7.1.2
    chromedriverpath: chromedriver_win32_v92.0.4515.43.exe
    zhenji: 0
    appPackage: com.tencent.mm
    appActivity: .ui.LauncherUI
- desc: 设备名称_夜神62046,appium启动服务端口号_42046
  port: 42046
  desired_caps:
    platformName: Android
    deviceName: 127.0.0.1:62046
    unicodeKeyboard: !!bool True
    resetKeyboard: !!bool True
    noReset: !!bool True
    newCommandTimeout: 6000
    udid: 127.0.0.1:62046
    platformVersion: 7.1.2
    chromedriverpath: chromedriver_win32_v92.0.4515.43.exe
    zhenji: 0
    appPackage: com.tencent.mm
    appActivity: .ui.LauncherUI
- desc: 设备名称_夜神62047,appium启动服务端口号_42047
  port: 42047
  desired_caps:
    platformName: Android
    deviceName: 127.0.0.1:62047
    unicodeKeyboard: !!bool True
    resetKeyboard: !!bool True
    noReset: !!bool True
    newCommandTimeout: 6000
    udid: 127.0.0.1:62047
    platformVersion: 7.1.2
    chromedriverpath: chromedriver_win32_v92.0.4515.43.exe
    zhenji: 0
    appPackage: com.tencent.mm
    appActivity: .ui.LauncherUI
- desc: 设备名称_夜神62048,appium启动服务端口号_42048
  port: 42048
  desired_caps:
    platformName: Android
    deviceName: 127.0.0.1:62048
    unicodeKeyboard: !!bool True
    resetKeyboard: !!bool True
    noReset: !!bool True
    newCommandTimeout: 6000
    udid: 127.0.0.1:62048
    platformVersion: 7.1.2
    chromedriverpath: chromedriver_win32_v92.0.4515.43.exe
    zhenji: 0
    appPackage: com.tencent.mm
    appActivity: .ui.LauncherUI
- desc: 设备名称_夜神62049,appium启动服务端口号_42049
  port: 42049
  desired_caps:
    platformName: Android
    deviceName: 127.0.0.1:62049
    unicodeKeyboard: !!bool True
    resetKeyboard: !!bool True
    noReset: !!bool True
    newCommandTimeout: 6000
    udid: 127.0.0.1:62049
    platformVersion: 7.1.2
    chromedriverpath: chromedriver_win32_v92.0.4515.43.exe
    zhenji: 0
    appPackage: com.tencent.mm
    appActivity: .ui.LauncherUI
- desc: 设备名称_夜神62050,appium启动服务端口号_42050
  port: 42050
  desired_caps:
    platformName: Android
    deviceName: 127.0.0.1:62050
    unicodeKeyboard: !!bool True
    resetKeyboard: !!bool True
    noReset: !!bool True
    newCommandTimeout: 6000
    udid: 127.0.0.1:62050
    platformVersion: 7.1.2
    chromedriverpath: chromedriver_win32_v92.0.4515.43.exe
    zhenji: 0
    appPackage: com.tencent.mm
    appActivity: .ui.LauncherUI
- desc: 设备名称_夜神62051,appium启动服务端口号_42051
  port: 42051
  desired_caps:
    platformName: Android
    deviceName: 127.0.0.1:62051
    unicodeKeyboard: !!bool True
    resetKeyboard: !!bool True
    noReset: !!bool True
    newCommandTimeout: 6000
    udid: 127.0.0.1:62051
    platformVersion: 7.1.2
    chromedriverpath: chromedriver_win32_v92.0.4515.43.exe
    zhenji: 0
    appPackage: com.tencent.mm
    appActivity: .ui.LauncherUI
- desc: 设备名称_夜神62052,appium启动服务端口号_42052
  port: 42052
  desired_caps:
    platformName: Android
    deviceName: 127.0.0.1:62052
    unicodeKeyboard: !!bool True
    resetKeyboard: !!bool True
    noReset: !!bool True
    newCommandTimeout: 6000
    udid: 127.0.0.1:62052
    platformVersion: 7.1.2
    chromedriverpath: chromedriver_win32_v92.0.4515.43.exe
    zhenji: 0
    appPackage: com.tencent.mm
    appActivity: .ui.LauncherUI
- desc: 设备名称_夜神62053,appium启动服务端口号_42053
  port: 42053
  desired_caps:
    platformName: Android
    deviceName: 127.0.0.1:62053
    unicodeKeyboard: !!bool True
    resetKeyboard: !!bool True
    noReset: !!bool True
    newCommandTimeout: 6000
    udid: 127.0.0.1:62053
    platformVersion: 7.1.2
    chromedriverpath: chromedriver_win32_v92.0.4515.43.exe
    zhenji: 0
    appPackage: com.tencent.mm
    appActivity: .ui.LauncherUI
- desc: 设备名称_夜神62054,appium启动服务端口号_42054
  port: 42054
  desired_caps:
    platformName: Android
    deviceName: 127.0.0.1:62054
    unicodeKeyboard: !!bool True
    resetKeyboard: !!bool True
    noReset: !!bool True
    newCommandTimeout: 6000
    udid: 127.0.0.1:62054
    platformVersion: 7.1.2
    chromedriverpath: chromedriver_win32_v92.0.4515.43.exe
    zhenji: 0
    appPackage: com.tencent.mm
    appActivity: .ui.LauncherUI
- desc: 设备名称_夜神62055,appium启动服务端口号_42055
  port: 42055
  desired_caps:
    platformName: Android
    deviceName: 127.0.0.1:62055
    unicodeKeyboard: !!bool True
    resetKeyboard: !!bool True
    noReset: !!bool True
    newCommandTimeout: 6000
    udid: 127.0.0.1:62055
    platformVersion: 7.1.2
    chromedriverpath: chromedriver_win32_v92.0.4515.43.exe
    zhenji: 0
    appPackage: com.tencent.mm
    appActivity: .ui.LauncherUI
- desc: 设备名称_夜神62056,appium启动服务端口号_42056
  port: 42056
  desired_caps:
    platformName: Android
    deviceName: 127.0.0.1:62056
    unicodeKeyboard: !!bool True
    resetKeyboard: !!bool True
    noReset: !!bool True
    newCommandTimeout: 6000
    udid: 127.0.0.1:62056
    platformVersion: 7.1.2
    chromedriverpath: chromedriver_win32_v92.0.4515.43.exe
    zhenji: 0
    appPackage: com.tencent.mm
    appActivity: .ui.LauncherUI
- desc: 设备名称_夜神62057,appium启动服务端口号_42057
  port: 42057
  desired_caps:
    platformName: Android
    deviceName: 127.0.0.1:62057
    unicodeKeyboard: !!bool True
    resetKeyboard: !!bool True
    noReset: !!bool True
    newCommandTimeout: 6000
    udid: 127.0.0.1:62057
    platformVersion: 7.1.2
    chromedriverpath: chromedriver_win32_v92.0.4515.43.exe
    zhenji: 0
    appPackage: com.tencent.mm
    appActivity: .ui.LauncherUI
- desc: 设备名称_夜神62058,appium启动服务端口号_42058
  port: 42058
  desired_caps:
    platformName: Android
    deviceName: 127.0.0.1:62058
    unicodeKeyboard: !!bool True
    resetKeyboard: !!bool True
    noReset: !!bool True
    newCommandTimeout: 6000
    udid: 127.0.0.1:62058
    platformVersion: 7.1.2
    chromedriverpath: chromedriver_win32_v92.0.4515.43.exe
    zhenji: 0
    appPackage: com.tencent.mm
    appActivity: .ui.LauncherUI
- desc: 设备名称_夜神62059,appium启动服务端口号_42059
  port: 42059
  desired_caps:
    platformName: Android
    deviceName: 127.0.0.1:62059
    unicodeKeyboard: !!bool True
    resetKeyboard: !!bool True
    noReset: !!bool True
    newCommandTimeout: 6000
    udid: 127.0.0.1:62059
    platformVersion: 7.1.2
    chromedriverpath: chromedriver_win32_v92.0.4515.43.exe
    zhenji: 0
    appPackage: com.tencent.mm
    appActivity: .ui.LauncherUI
- desc: 设备名称_夜神62060,appium启动服务端口号_42060
  port: 42060
  desired_caps:
    platformName: Android
    deviceName: 127.0.0.1:62060
    unicodeKeyboard: !!bool True
    resetKeyboard: !!bool True
    noReset: !!bool True
    newCommandTimeout: 6000
    udid: 127.0.0.1:62060
    platformVersion: 7.1.2
    chromedriverpath: chromedriver_win32_v92.0.4515.43.exe
    zhenji: 0
    appPackage: com.tencent.mm
    appActivity: .ui.LauncherUI

欢迎大家一起学习,一起进步,喜欢私聊。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐