def http_server_init(): httpserver_config = Read_Http_Server_Config().httpserver_config port = httpserver_config.httpserver_port if "windows" == platform.system().lower(): get_httpserver_process_id_command = 'netstat -ano|findstr "0.0.0.0:%s"' % port try: httpserver_process_id = subprocess.check_output( get_httpserver_process_id_command, shell=True) httpserver_process_id = httpserver_process_id.decode('utf-8') httpserver_process_id = StrTool.getStringWithLBRB( httpserver_process_id, 'LISTENING', '\r\n').strip() kill_httpserver_process_command = 'taskkill /F /pid %s' % httpserver_process_id print('###%s###1' % httpserver_process_id) try: print('关闭http.server进程,进程id:' + httpserver_process_id + ',该进程监听已监听端口:' + port) subprocess.check_call(kill_httpserver_process_command, shell=True) except: print('关闭http.server进程失败,进程id:' + httpserver_process_id + ',该进程监听已监听端口:' + port) except: print('http.server未查找到监听端口%s的服务' % port) elif "linux" == platform.system().lower(): # 获得当前httpserver所有进程id get_httpserver_process_ids_command = "ps -ef|grep 'http.server %s'|grep -v grep|awk '{print $2}'" % port try: httpserver_process_ids = subprocess.check_output( get_httpserver_process_ids_command, shell=True) httpserver_process_ids = httpserver_process_ids.decode('utf-8') get_lambda = lambda info: list(filter(None, info.split('\n')) ) if info else [] httpserver_process_ids = get_lambda(httpserver_process_ids) if not len(httpserver_process_ids) > 0: print('http.server未查找到监听端口%s的服务' % port) for httpserver_process_id in httpserver_process_ids: try: print('关闭http.server进程,进程id:' + httpserver_process_id + ',该进程监听已监听端口:' + port) subprocess.check_output("kill -9 " + httpserver_process_id, shell=True) except: print('关闭http.server进程失败,进程id:' + httpserver_process_id + ',该进程监听已监听端口:' + port) except: print('http.server未查找到监听端口%s的服务' % port) elif "darwin" == platform.system().lower(): pass print('启动http.server,使用端口' + port) p = multiprocessing.Process(target=start_http_server, args=(port, )) p.daemon = True p.start()
def http_server_init(): httpserver_config = Read_Http_Server_Config().httpserver_config port = httpserver_config.httpserver_port if "windows" == platform.system().lower(): get_httpserver_process_id_command = 'netstat -ano|findstr "0.0.0.0:%s"' % port try: httpserver_process_id = subprocess.check_output( get_httpserver_process_id_command, shell=True) return except: print('http.server未查找到监听端口%s的服务' % port) elif "linux" == platform.system().lower(): get_httpserver_process_ids_command = "ps -ef|grep 'http.server %s'|grep -v grep|awk '{print $2}'" % port httpserver_process_ids = subprocess.check_output( get_httpserver_process_ids_command, shell=True) if httpserver_process_ids: return elif "darwin" == platform.system().lower(): pass p = multiprocessing.Process(target=start_http_server, args=(port, )) p.daemon = True p.start()
def get_devices_info(self): devices_info = [] local_ip = Read_Http_Server_Config().httpserver_config.local_ip httpserver_port = Read_Http_Server_Config( ).httpserver_config.httpserver_port for i in range(len(self.devices_desc)): device_info = {} device_info.update({'device_desc': self.devices_desc[i].strip()}) device_info.update( {'app_ui_config': self.app_ui_configs[i].strip()}) device_info.update({'server_port': self.server_ports[i].strip()}) device_info.update({'server_ip': self.server_ips[i].strip()}) if self.system_auth_alert_labels: device_info.update({ 'system_auth_alert_label': self.system_auth_alert_labels[i] }) # 构建desired_capabilities a_device_capabilities_num = 0 a_device_appActivitys = [] a_device_appPackages = [] a_device_bundleIds = [] a_device_apps = [] if len(self.appActivitys) and len(self.appPackages): a_device_appActivitys = self.appActivitys[i].split('&&') a_device_appPackages = self.appPackages[i].split('&&') a_device_capabilities_num = len(a_device_appActivitys) if len(self.bundleIds): a_device_bundleIds = self.bundleIds[i].split('&&') a_device_capabilities_num = len(a_device_bundleIds) if len(self.apps_dirs): paths = os.walk(self.apps_dirs[i].strip()) for dirPath, dirName, fileNames in paths: for fileName in fileNames: a_device_apps.append( ('http://%s:%s/%s/%s') % (local_ip, httpserver_port, self.apps_dirs[i].strip(), fileName)) a_device_capabilities_num = len(a_device_apps) if len(self.apps_urls): a_device_apps = self.apps_urls[i].split('&&') a_device_capabilities_num = len(a_device_apps) a_devices_desired_capabilities = [] for j in range(a_device_capabilities_num): desired_capabilities = {} desired_capabilities.update({'udid': self.udids[i].strip()}) desired_capabilities.update( {'platformName': self.platformNames[i].strip()}) if len(self.automationNames): desired_capabilities.update( {'automationName': self.automationNames[i].strip()}) desired_capabilities.update( {'platformVersion': self.platformVersions[i].strip()}) if len(self.deviceNames): desired_capabilities.update( {'deviceName': self.deviceNames[i].strip()}) if len(self.chromeDriverPorts): desired_capabilities.update({ 'chromedriverPort': self.chromeDriverPorts[i].strip() }) if len(self.chromeDriverPaths): desired_capabilities.update({ 'chromedriverExecutable': self.chromeDriverPaths[i].strip() }) if len(self.recreateChromeDriverSessions): recreateChromeDriverSessions_value = False if 'true' == self.recreateChromeDriverSessions[i].strip( ).lower(): recreateChromeDriverSessions_value = True desired_capabilities.update({ 'recreateChromeDriverSessions': recreateChromeDriverSessions_value }) if len(self.nativeWebScreenshots): nativeWebScreenshot = False if 'true' == self.nativeWebScreenshots[i].strip().lower(): nativeWebScreenshot = True desired_capabilities.update( {'nativeWebScreenshot': nativeWebScreenshot}) desired_capabilities.update( {'systemport': self.systemports[i].strip()}) if len(self.wdaLocalPorts): desired_capabilities.update( {'wdaLocalPort': self.wdaLocalPorts[i].strip()}) if len(self.appActivitys) and len(self.appPackages): desired_capabilities.update( {'appActivity': a_device_appActivitys[j].strip()}) desired_capabilities.update( {'appPackage': a_device_appPackages[j].strip()}) if len(self.bundleIds): desired_capabilities.update( {'bundleId': a_device_bundleIds[j].strip()}) if len(self.apps_dirs) or len(self.apps_urls): desired_capabilities.update( {'app': a_device_apps[j].strip()}) if len(self.noSigns): noSign = False if 'true' == self.noSigns[i].strip().lower(): noSign = True desired_capabilities.update({'noSign': noSign}) if len(self.fullResets): fullReset = False if 'true' == self.fullResets[i].strip().lower(): fullReset = True desired_capabilities.update({'fullReset': fullReset}) a_devices_desired_capabilities.append(desired_capabilities) device_info.update( {'capabilities': a_devices_desired_capabilities}) # 完成一台设备构建 devices_info.append(device_info) return devices_info