appium+python 多设备并行执行脚本
Posted 含笑半步颠√
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了appium+python 多设备并行执行脚本相关的知识,希望对你有一定的参考价值。
1.ready.py文件
def getport(): aport = random.randint(4700, 4900) # 判断端口是否被占用 while getDeviceInfo.is_open(‘127.0.0.1‘, aport): aport = random.randint(4700, 4900) bpport = random.randint(4700, 4900) while getDeviceInfo.is_open(‘127.0.0.1‘, bpport): bpport = random.randint(4700, 4900) return aport, bpport def getsys(): sys = str(random.randint(4, 6)) + "." + str(random.randint(4, 6)) + "." + "2" return sys class readyH(object): def __init__(self,device): self.device = device aa= getport() self.ap = aa[0] self.bp = aa[1] def installapp(self): os.popen("adb install -r "+str(getApkPath.get_apk_path())) def start_appium(self): # device_uid, # appium -p 4723 -bp 4724 -U 22238e79 --command-timeout 600 errormsg = "" appium_server_url = "" try: ap = getport()[0] bp = getport()[1] print ap,bp,self.device cmd = ‘appium‘ + ‘ -p ‘ + str(self.ap )+ ‘ --bootstrap-port ‘ + str(self.bp) + ‘ -U ‘ + str(self.device) # ‘ -U ‘+ device_uid+ print cmd # p = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE) #stdout=PIPE, stderr=PIPE) p = subprocess.Popen(cmd, shell=True) print p except Exception, msg: errormsg = str(msg) def get_driver(self): desired_caps = {} desired_caps[‘platformName‘] = ‘Android‘ desired_caps[‘platformVersion‘] = getsys() desired_caps[‘app‘] = getApkPath.get_apk_path() desired_caps[‘appPackage‘] = ‘vStudio.Android.Camera360‘ desired_caps[‘deviceName‘] = self.device url = ‘http://localhost:%s/wd/hub‘ % str(self.ap) print url self.driver = webdriver.Remote(url, desired_caps) return self.driver def disdrop(self): self.driver.close_app() self.driver.quit() def main_case(self): self.installapp() time.sleep(10) self.start_appium() time.sleep(5) self.get_driver() time.sleep(5) testcase.myCase(self.driver,self.device).case_one() time.sleep(5) self.disdrop()
2.run.py
class myThread(threading.Thread): def __init__(self,device): threading.Thread.__init__(self) self.device = device def run(self): if __name__ == ‘__main__‘: a = ready.readyH(self.device) a.main_case() if __name__ == ‘__main__‘: try: devices = mod_config.getDeviceListConfig("alldevices") tt =[] for device in devices : t = myThread(device[0]) tt.append(t) for t in tt: t.start() time.sleep(5) for t in tt: t.join() except: print "线程运行失败"
3.testcase.py
#!/usr/bin/python # -*- coding: utf-8 -*- from appium import webdriver from public import mod_config from lib import appiumLib import time _initSize = [1080,1776] class myCase(object): def __init__(self,driver,device): self.device = device self.driver = driver def case_one(self): print self.driver tipsclick = mod_config.get_config("firstPage", "开机画面跳过") setting = mod_config.get_config("mine", "设置") about = mod_config.get_config("mine", "关于") c360icon = mod_config.get_config("mine", "图标") entersdk = mod_config.get_config("mine", "特效测试") makePic = mod_config.get_config("mine", "制图测试") mine = mod_config.get_config("firstPage", "我的") appiumLib.click_by_id(self, tipsclick) appiumLib.click_by_name(self, "立即体验") appiumLib.back_times(self, 1) time.sleep(2) appiumLib.click_by_xpath(self, mine) # 取消发布按钮处的提示信息 appiumLib.tap_forxy(self, [595, 150], _initSize, 500) appiumLib.click_by_id(self, setting) appiumLib.click_by_id(self, about) appiumLib.click_by_id(self, c360icon) appiumLib.click_by_id(self, entersdk) appiumLib.click_by_id(self, makePic) for i in range(0, 3): time.sleep(5) appiumLib.click_by_id(self, makePic) print "制图完成"
以上是关于appium+python 多设备并行执行脚本的主要内容,如果未能解决你的问题,请参考以下文章
Appium+Python app自动化测试之脚本启动和停止Appium服务
app 自动化测试 - 多设备并发 -appium+pytest+ 多线程