Beispiel #1
0
class Server_ios():
    '''
    对获取的设备信息再做一次处理,结果如下:
    ['127.0.0.1:62001', '127.0.0.1:62025']
    '''
    def __init__(self):
        self.dos_cmd = DosCmd()
        self.result = self.dos_cmd.execute_cmd_result('idevice_id --list')
        #['List of devices attached ', '127.0.0.1:62001\tdevice', '127.0.0.1:62025\tdevice']
        self.write_user_command = WriteUserCommand()
        self.port = Port()
        self.pport = self.port.create_port_list('4705', self.get_devices())
        self.bpport = self.port.create_port_list('4900', self.get_devices())

    def get_devices(self):
        # 处理完成后例如:['127.0.0.1:62001', '127.0.0.1:62025']
        new_result_list = []
        if len(self.result) >= 1:
            for i in range(0, len(self.result)):
                new_result = self.result[i].split('\t')[0]
                new_result_list.append(new_result)
            return new_result_list
        else:
            return None

    def create_start_cmd_list(self, i):
        # ['node  /Applications/Appium.app/Contents/Resources/app/node_modules/appium/build/lib/main.js  --port 4725  --bootstrap-port  4726','']
        # main函数传入的i 决定将哪个-p、-bp和设备组合 append到list中
        cmd_list = []
        cmd = 'node  /Applications/Appium.app/Contents/Resources/app/node_modules/appium/build/lib/main.js  --port ' + str(
            self.pport[i]) + ' --bootstrap-port ' + str(
                self.bpport[i]) + ' --session-override'
        cmd_list.append(cmd)

        self.write_user_command.write_command_ios(i, str(self.pport[i]),
                                                  str(self.bpport[i]),
                                                  str(self.get_devices()[i]))
        print(cmd_list)
        return cmd_list

    def start_server(self, i):
        # 将main函数传入的i,传给create_start_cmd_list()

        self.dos_cmd.execute_cmd(self.create_start_cmd_list(i)[0])
        # time.sleep(5)
        # self.basedriver = BaseDriver(i)
        # self.basedriver.Android_driver()

    def kill_server(self):
        # MAC杀node.exe进程---sudo lsof -c node
        # kill -9 pid
        pass

    def main(self):
        '''
        多线程启动
        '''
        self.kill_server()
        self.write_user_command.clean_yaml()
        if self.get_devices() != None:
            for i in range(len(self.get_devices())):
                thread = threading.Thread(target=self.start_server, args=(i, ))
                thread.start()
        else:
            return None


#
# server = Server_ios()
# # # server.get_devices()
# server.main()
# # server.kill_server()
Beispiel #2
0
 def get_ports(self, start_port):
     #获取端口port
     port = Port()
     port_list = port.create_port_list(start_port, self.devices_list)
     return port_list
Beispiel #3
0
class Server(object):
    def __init__(self):
        self.p = Port()
        self.dev = Devices()
        self.doc = DosCmd()
        self.oy = OperateYaml()
        self.devices_list = self.dev.get_devices()

    def create_appium_command(self, i):
        '''
        根据设备列表拼接出对应appium启动命令
        :return:
        '''
        command_list = []
        appium_port_list = self.p.create_port_list(4000)  # 根据获取设备信息创建对应端口列表
        appium_bp_port_list = self.p.create_port_list(4500)
        if self.devices_list != None:
            # for i in range(len(devices_list)):  # 根据设备信息长度,对3个list进行for循环,依次去除并拼接好敏灵
            command = "appium -p " + str(appium_port_list[i]) + " -bp " + str(
                appium_bp_port_list[i]
            ) + " -U " + str(
                self.devices_list[i]
            ) + " --no-reset --session-override" + " --log D:\Job\python\Script\Lipei_app\\report\log\\" + str(
                self.devices_list[i]) + ".log"  #将log写入对应文件
            command_list.append(command)
            self.oy.write_yaml(i, str(self.devices_list[i]),
                               str(appium_bp_port_list[i]),
                               str(appium_port_list[i]))
            return command_list

    def start_server(self, i):
        '''
        启动appium服务,变量i通过多线程appium_start传入
        :param i:
        :return:
        '''
        self.start_list = self.create_appium_command(
            i)  # 带self的就表示对象本身,属于该py全局的,这里就可以认为定义全局变量
        self.doc.cmd_no_result(self.start_list[0])  #注意这里不能传i,仅能是0
        time.sleep(20)

    def appium_start(self):
        '''
        根据接入设备多线程启动服务
        :return:
        '''
        self.kill_servee()
        # self.oy.clear_data()
        for i in range(len(self.devices_list)):  # 根据得到的启动命令列表长度,确认该启动几个线程
            appium_server = multiprocessing.Process(target=self.start_server,
                                                    args=(i, ))
            appium_server.start()

    def kill_servee(self):
        '''
        查找appium进程:tasklist | find "node.exe";
        杀死所有node进程:taskkill -F -PID "node.exe"
        :return:
        '''
        command = 'tasklist | find "node.exe"'
        task_msg = self.doc.cmd_result(command)
        if len(task_msg) > 0:
            self.doc.cmd_no_result('taskkill -F -PID node.exe')

    def close_driver(self, i):
        dr = BaseDriver()
        dr.close_driver(i)
Beispiel #4
0
 def create_port_list(self, start_port):
     """创建可用端口"""
     port = Port()
     port_list = port.create_port_list(start_port, self.device_list)
     return port_list