多进程并发启动APP设备

首先需要启动多个appium,同时连接多个模拟器设备:
C:\WINDOWS\system32>appium -p 4723
[Appium] Welcome to Appium v1.7.2
[Appium] Appium REST http interface listener started on 0.0.0.0:4723

C:\WINDOWS\system32>appium -p 4725
[Appium] Welcome to Appium v1.7.2
[Appium] Non-default server args:
[Appium]   port: 4725
[Appium] Appium REST http interface listener started on 0.0.0.0:4725

C:\WINDOWS\system32>adb connect 127.0.0.1:62001
C:\WINDOWS\system32>adb connect 127.0.0.1:62005
kyb_caps.yaml

platformName: Android
deviceName: 127.0.0.1  #--这个要写成这样,且不能少
platformVersion: 4
appname: **.apk
appPackage: com.**
appActivity: com.**.biz.splash.SplashScreenActivity
noReset: False
unicodeKeyboard: True
resetKeyboard: True
ip: 127.0.0.1

 

 1 多设备启动
 2 from appium import webdriver
 3 from appium_practices.common.common_func import *
 4 import os
 5 import logging.config
 6 
 7 filename = os.path.dirname(os.path.dirname(__file__))
 8 log_filename = os.path.join(filename, 'confg', 'log.conf')
 9 logging.config.fileConfig(log_filename)
10 logging = logging.getLogger()
11 
12 data = get_yaml()
13 
14 device_list=['127.0.0.1:62001','127.0.0.1:62025']
15 
16 def appium_desired(udid,port):
17     desired_caps = {}
18 
19     desired_caps['platformName'] = data['platformName']
20     desired_caps['platformVersion'] = data['platformVersion']
21     desired_caps['deviceName'] = data['deviceName']
22     desired_caps['udid'] = udid      #需要加上这个udid用来定义设备列表
23     filename = os.path.dirname(os.path.dirname(__file__))
24     app_filename = os.path.join(filename, 'app', data['appname'])
25     desired_caps['app'] = app_filename
26     desired_caps['appPackage'] = data['appPackage']
27     desired_caps['appActivity'] = data['appActivity']
28     desired_caps['noReset'] = data['noReset']
29     desired_caps['unicodeKeyboard'] = data['unicodeKeyboard']
30     desired_caps['resetKeyboard'] = data['resetKeyboard']
31 
32     logging.info('启动app')
33     driver = webdriver.Remote('http://{}:{}/wd/hub'.format(data['ip'], port), desired_caps)
34     return driver
35 
36 if __name__ == '__main__':
37     appium_desired(device_list[0],4723)
38     appium_desired(device_list[1],4725)

 

 1 多进程并发启动设备
 2 from appium import webdriver
 3 from appium_practices.common.common_func import *
 4 import os
 5 import logging.config
 6 import multiprocessing
 7 
 8 filename = os.path.dirname(os.path.dirname(__file__))
 9 log_filename = os.path.join(filename, 'confg', 'log.conf')
10 logging.config.fileConfig(log_filename)
11 logging = logging.getLogger()
12 
13 data = get_yaml()
14 
15 device_list=['127.0.0.1:62001','127.0.0.1:62025']
16 
17 def appium_desired(udid,port):
18     desired_caps = {}
19 
20     desired_caps['platformName'] = data['platformName']
21     desired_caps['platformVersion'] = data['platformVersion']
22     desired_caps['deviceName'] = data['deviceName']
23     desired_caps['udid'] = udid
24     filename = os.path.dirname(os.path.dirname(__file__))
25     app_filename = os.path.join(filename, 'app', data['appname'])
26     desired_caps['app'] = app_filename
27     desired_caps['appPackage'] = data['appPackage']
28     desired_caps['appActivity'] = data['appActivity']
29     desired_caps['noReset'] = data['noReset']
30     desired_caps['unicodeKeyboard'] = data['unicodeKeyboard']
31     desired_caps['resetKeyboard'] = data['resetKeyboard']
32 
33     logging.info('启动app')
34     driver = webdriver.Remote('http://{}:{}/wd/hub'.format(data['ip'], port), desired_caps)
35 
36     return driver
37 
38 # 构建desired进程租
39 desired_process = []
40 
41 #加载desied进程
42 for i in range(len(device_list)):
43     port=4723+2*i
44     desired=multiprocessing.Process(target=appium_desired,args=(device_list[i],port))
45     desired_process.append(desired)
46 
47 if __name__ == '__main__':
48     # 同时启动多设备执行测试
49     for desir in desired_process:
50         desir.start()
51     for desir in desired_process:
52         desir.join()

posted on 2019-07-15 20:59  cherry_ning  阅读(348)  评论(0)    收藏  举报

导航