#coding=utf-8 #coding=utf-8 import re import time,sys,os import subprocess from UIAUTO_APP import settings import threading from multiprocessing import Process sys.path.append(os.path.abspath('..')) from UIAUTO_APP.public.adbUtils import ADB class AppiumServer(object): #TODO log_path = settings.testlog+'\\start_appium.log' def __init__(self): #多个设备信息的list self.machine_datas ={} #从文件读取出来的多个设备信息list def start_appium(self,ip,port,bp_port,udid): #'启动appium服务' print(u'devices:{} start appium...'.format(udid)) command_search = 'netstat -ano|findstr "{}"'.format(port) command_data=os.popen(command_search) data=command_data.read() print (data) port_list = re.findall(r":(\d{4,6}).*\s(\d{1,8})",data)#搜索端口和PID print (port_list) if port_list: #停服务 #排除进程为0的并转为dict去重 [port_list.remove(i)for i in port_list if i[1]=='0'] port_pid = dict(port_list) for k in port_pid.keys(): print(u'port:{0} is used,kill pid:{1}'.format(k,port_pid[k])) args3 = "taskkill -PID {} -F".format(port_pid[k]) os.popen(args3) #启服务 cmd2 = "start /b appium -a {0} -p {1} -bp {2} -U {3} -g {4} --no-reset".format(ip,port,bp_port,udid,self.log_path) t1 = RunServer(cmd2,self.log_path,udid) p = Process(target=t1.start()) p.start() def stop_server(self,port): p = os.popen('netstat -ano|findstr {0}|findstr LISTENING'.format(port)) out = p.read() if out: print (out) pid = out.split()[-1] print (pid) os.popen('taskkill /pid %s /f'%pid) def multi_startappium(self): '批量启动appium服务' try: if self.machine_datas: for single_machine in self.machine_datas: self.start_appium(single_machine['ip'],single_machine['port'],single_machine['bp_port'],single_machine['udid']) else: print(u'no machine info,please check') except Exception as e: # logs.exception(e) raise e class RunServer(threading.Thread): def __init__(self, cmd,log_path,udid): threading.Thread.__init__(self) self.cmd = cmd self.log_path=log_path self.udid=udid def run(self): with subprocess.Popen(self.cmd,stdout=open(self.log_path,'a'),stderr=subprocess.PIPE,shell=True) as cmd2: cmd2.wait() time.sleep(8) print(u'devices:{} appium server start completed !'.format(self.udid)) # os.system(self.cmd) if __name__=='__main__': print (ADB().getDeviceIDs()) # AppiumServer().start_appium('127.0.0.1','4723','2000','W8R0215902002905') AppiumServer().stop_server('4723')
appium服务
最新推荐文章于 2024-07-12 18:17:04 发布