def __init__(self): """ self.config: 获取配置文件 self.poco: 获取poco实例 """ self.config = Config().get_data print(f"device(): {device()}") # 检查adb状态 adb = ADB() device_list = adb.devices() print(f"device_list: {device_list}") device_num = len(device_list) >= 1 # print(device_list) assert_equal(device_num, True, "设备连接数至少>=1") # self.device_list = device_list # 获取poco实例 self.poco = AndroidUiautomationPoco(use_airtest_input=True, screenshot_each_action=False) # 获取根目录 # self.root_dir = os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) # if not cli_setup(): # auto_setup( # basedir=self.root_dir, # devices=self.["android_devices"], # logdir=False # ) self._setting() self.width, self.height = device().get_current_resolution() print("[BasePage] init...") self.root_dir = os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) self.main_phone = self.config.get("main_phone")
def connect_dev(devList=[]): for dev in devList: ADB(dev).disconnect() connect_device(f"android:///{dev}") print(ADB(dev).get_status()) devices = [tmp[0] for tmp in ADB().devices(state="device")] return devices
def get_device(serialno,on_devices,old_devices): ip = is_ip_device(serialno) device_info = None if ip: try: device_info = old_devices[ip] device_info['status'] ='0' except: pass else: try: # USB连接 获取ip device_adb = ADB(serialno) ip = device_adb.get_ip_address() try: # 该USB已通过ip连接 old_devices[ip] on_devices.index(ip+ADB_PORT) except: # 用adb tcpip模式重启adb device_adb.cmd(['tcpip',ADB_PORT[1:]]) device_info = adb_ip_connect(ip) device_info['id'] = serialno except: pass return device_info
def __init__(self, serialno=None, host=None, cap_method=CAP_METHOD.MINICAP_STREAM, touch_method=TOUCH_METHOD.MINITOUCH, ime_method=IME_METHOD.YOSEMITEIME, ori_method=ORI_METHOD.MINICAP, display_id=None, input_event=None): super(Android, self).__init__() self.serialno = serialno or self.get_default_device() self.cap_method = cap_method.upper() self.touch_method = touch_method.upper() self.ime_method = ime_method.upper() self.ori_method = ori_method.upper() self.display_id = display_id self.input_event = input_event # init adb self.adb = ADB(self.serialno, server_addr=host, display_id=self.display_id, input_event=self.input_event) self.adb.wait_for_device() self.sdk_version = self.adb.sdk_version if self.sdk_version >= SDK_VERISON_ANDROID10 and self.touch_method == TOUCH_METHOD.MINITOUCH: self.touch_method = TOUCH_METHOD.MAXTOUCH self._display_info = {} self._current_orientation = None # init components self.rotation_watcher = RotationWatcher(self.adb) self.minicap = Minicap(self.adb, ori_function=self.get_display_info, display_id=self.display_id) self.javacap = Javacap(self.adb) self.minitouch = Minitouch(self.adb, ori_function=self.get_display_info, input_event=self.input_event) self.maxtouch = Maxtouch(self.adb, ori_function=self.get_display_info) self.yosemite_ime = YosemiteIme(self.adb) self.recorder = Recorder(self.adb) self._register_rotation_watcher() self._touch_proxy = None
def __init__(self, serialno=None, host=None, cap_method=CAP_METHOD.MINICAP_STREAM, touch_method=TOUCH_METHOD.MINITOUCH, ime_method=IME_METHOD.YOSEMITEIME, ori_method=ORI_METHOD.MINICAP, ): super(Android, self).__init__() self.serialno = serialno or self.get_default_device() self.cap_method = cap_method.upper() self.touch_method = touch_method.upper() self.ime_method = ime_method.upper() self.ori_method = ori_method.upper() # init adb self.adb = ADB(self.serialno, server_addr=host) self.adb.wait_for_device() self.sdk_version = self.adb.sdk_version self._display_info = {} self._current_orientation = None # init components self.rotation_watcher = RotationWatcher(self.adb) self.minicap = Minicap(self.adb, ori_function=self.get_display_info) self.javacap = Javacap(self.adb) self.minitouch = Minitouch(self.adb, ori_function=self.get_display_info) self.yosemite_ime = YosemiteIme(self.adb) self.recorder = Recorder(self.adb) self._register_rotation_watcher()
def cancel_handler(signal, frame): ST.MANUAL_CANCEL = True logger.info('人工终止') if G: ADB().disconnect() ADB().kill_server() sys.exit(0)
def install_apk(dev_obj,apkPath,package_name): #wake up dev_obj.wake() dev_obj.home() fileList = os.listdir(apkPath) ADB(dev_obj.uuid).install_app(f"{apkPath}/{str(fileList[0])}", replace=True, install_options=["-d", "-g"]) ADB(dev_obj.uuid).start_app(package_name) time.sleep(3) #等待启动首页广告加载完成。 要不然monkey全部点着广告在玩
def adb_devices(self): """ 获取手机设备号 :return: """ adb = ADB() if not adb.devices(): raise IndexError('not devices found') return adb.devices()
def run(self): devices = [d[0] for d in ADB().devices()][0] adb = ADB(devices) mini_cap_ = Minicap(adb, (360, 640)) # 指定projection,未指定会按照默认的分辨率(图片大,延迟高) datas = mini_cap_.get_stream( lazy=True) # 返回一个可迭代对象,mini_cup返回最新的一帧画面的流 for data in datas: self.frame_info.emit(data)
def __init__(self, parent=None): super(MyWindow, self).__init__(parent) self.setupUi(self) self.InitListWidget() self.InitSignal() self.m_ScriptRoot = utils.GetCfgData('scripts_root') self.m_ADB = ADB() self.RefreshScripts() self.RefreshADB() self.m_Running = False
def connect_device_serialno(serialno): device_adb = ADB(serialno) ip = device_adb.get_ip_address() # 用adb tcpip模式重启adb device_adb.cmd(['tcpip',ADB_PORT[1:]]) device = connect_device_ip(ip) if(device): device['id'] = serialno return device return None
def get_serialno(ip): devices = get_on_devices() for device in devices: if(not is_ip_device(device)): # USB连接 获取ip device_adb = ADB(device) device_ip = device_adb.get_ip_address() if(ip == device_ip): return device return None
def getDevice(self): adbList = [i for i, j in ADB().devices() if j == 'device'] text, ok = QInputDialog.getItem( self, '选取设备', '在下拉列表中选择一个设备', adbList, adbList.index(fgoFunc.base.serialno) if fgoFunc.base.serialno and fgoFunc.base.serialno in adbList else 0, True, Qt.WindowFlags.WindowStaysOnTopHint) if ok and text: if text not in adbList: ADB(text) if text != fgoFunc.base.serialno: fgoFunc.base = fgoFunc.Base(text) self.ui.LBL_DEVICE.setText(fgoFunc.base.serialno)
def get_default_device(self): """ Get local default device when no serailno Returns: local device serialno """ if not ADB().devices(state="device"): raise IndexError("ADB devices not found") return ADB().devices(state="device")[0][0]
def ConnectRemoteADB(self): sText = self.TextAddr.text() sCmd = sText.split()[-2] sAddr = sText.split()[-1] if sCmd == 'connect': ADB(serialno=sAddr) elif sCmd == 'disconnect': ADB(serialno=sAddr).disconnect() else: QtWidgets.QMessageBox.information( self, "提示", self.tr("请输入正确指令!(connect or disconnect)")) self.RefreshADB()
def initAllDevice(): #初始化连接当前所有的设备 global adb try: adb = ADB() allDevices = adb.devices() for sn, dev in allDevices: connect_device('android:///' + sn) except Exception as err: raise err else: print([dev.serialno for dev in G.DEVICE_LIST])
def get_usb_devices(): devices = get_on_devices() ret_devices = [] for device in devices: if is_ip_device(device)==False: # USB连接 获取ip device_adb = ADB(device) ip = device_adb.get_ip_address() try: devices.index(ip+ADB_PORT) except: ret_devices.append(device) return ret_devices
def connect_all(): devices= get_usb_devices() device_infos = [] for device in devices: device_adb = ADB(device) ip = device_adb.get_ip_address() # 用adb tcpip模式重启adb device_adb.cmd(['tcpip',ADB_PORT[1:]]) device_info = adb_ip_connect(ip) if(device_info): device_info['id'] = device device_infos.append(device_info) return device_infos
def __init__(self): '''初始化设备''' adb = ADB() device_list = adb.devices() deviceNum = len(device_list) >= 1 assert_equal(deviceNum, True, "设备连接数量至少为1台以上") for i in range(len(device_list)): self.device = connect_device(self.main_phone) auto_setup(__file__, logdir=False, devices=[self.main_phone + device_list[i][0]]) self.check_app() self.setting()
def wakeup_item(): ADB(SERIALNO).keyevent('224') ADB(SERIALNO).swipe((300, 1000), (300, 500)) try: # ADB(SERIALNO).push(r'C:\uitest\mobile\webtool\static\item\test.png', ADB_PIC_URL)#测试电脑路径 # ADB(SERIALNO).push( # r'C:\Users\Guchao\Desktop\pr\uitest_project\ui_test_project\mobile\webtool\static\item\test.png', # ADB_PIC_URL) # 顾超电脑路径 # 陈羽的电脑 ADB(SERIALNO).push(r' D:\ui_test\ui_test_project - master\mobile\webtool\static\trade', '/sdcard/Pictures') ADB(SERIALNO).shell(ADB_SCAN_FILE) except Exception as e: print(e) return False
def preload_airtest_device_context(run_on_win=False, window_title='^.*errors and.*$'): from airtest.cli.runner import device as current_device if not current_device(): from airtest.core.main import set_serialno, set_windows from airtest.core.settings import Settings from airtest.core.android.adb import ADB adb_client = ADB() available_devices = adb_client.devices('device') if run_on_win or not available_devices: Settings.FIND_INSIDE = [8, 30] # 窗口边框偏移 set_windows(window_title=window_title) else: set_serialno() exec("from airtest.core.main import *") in globals()
def __init__(self): self.adb = ADB() self.tk = tk.Tk() self.tk.title(s.title) # self.icon = tk.PhotoImage(file=resource_path("image/gui/sora.png")) self.tk.iconbitmap(resource_path("image/gui/sora.ico")) # self.tk.geometry('500x300') self.status = Status(self) # menu bar self.menu_bar = MenuBar(self) self.tk.config(menu=self.menu_bar.tk) # bottom bar self.bottom_bar = BottomBarFrame(self) self.bottom_bar.pack(side=tk.BOTTOM, fill=tk.BOTH) self.update_devices = self.bottom_bar.update_devices # custom task list self.custom_task = CustomTaskFrame(self) self.custom_task.pack(side=tk.LEFT, fill=tk.BOTH) # inner child task list self.task = TaskFrame(self) self.task.pack(side=tk.LEFT, fill=tk.BOTH, expand=True) # init self.update_devices() self.status.set_status(Status.READY)
def getDevice(self): text, ok = (lambda adbList: QInputDialog.getItem( self, '选取设备', '在下拉列表中选择一个设备', adbList, adbList.index(self.serialno) if self.serialno and self.serialno in adbList else 0, True, Qt.WindowStaysOnTopHint))( [i for i, j in ADB().devices() if j == 'device']) if ok: self.serialno = text
def getDevice(self): text, ok = (lambda adbList: QInputDialog.getItem( self, '更改安卓设备', '在下拉列表中选择', adbList, adbList.index(self.serialno) if self.serialno and self.serialno in adbList else 0))( [i for i, j in ADB().devices() if j == 'device']) if ok and text: self.serialno = text
def run(func, apk_path, target_device: list = None): """ 程序主入口(多机运行) :param func: :param apk_path: :param target_device: 如果未指定,则运行在所有在线设备上 :return: """ # 添加类型转换,防止传参错误 if target_device: target_device = list(target_device) # 获取在线设备 devices = [dev[0] for dev in ADB().devices() ] if not target_device else target_device # todo: 进程数量可以用在线设备数关联,如果在线设备数量 > 20 则用常量值,否则用在线设备数 with concurrent.futures.ProcessPoolExecutor(max_workers=3) as executor: futures = [executor.submit(func, uuid, apk_path) for uuid in devices] for future in concurrent.futures.as_completed(futures): try: uuid, ret = future.result() except Exception as e: logger.info("generated an exception: {0}".format(e)) logger.info("测试出错请检查") else: if ret: results["tests"][uuid] = ret else: logger.info("测试出错请检查") run_summary(results)
def getDevice(self): text, ok = (lambda adbList: QInputDialog.getItem( self, '更改安卓设备', '在下拉列表中选择一个设备', adbList, adbList.index(self.serial) if self.serial and self.serial in adbList else 0))( [i for i, j in ADB().devices() if j == 'device']) #text,ok=QInputDialog.getText(self,'更改安卓设备','填写',text='emulator-5554') if ok and text: self.serial = text
def get_on_devices(): devices = ADB().devices() on_devices = [] for device in devices: serialno,status = device if status=="device": on_devices.append(serialno) return on_devices
def getDevs(self): adb = ADB() devs = adb.devices() if len(devs) > 0 and len(devs) < 2: devs1 = devs[0][0] print(devs1) return devs1 elif len(devs) == 2: devs1 = devs[0][0] devs2 = devs[1][0] d1 = connect_device('Android:///%s' % devs1) d2 = connect_device('Android:///%s' % devs2) print(d1, d2) return list(devs1), list(devs2) else: print(u'没发现手机设备')
def changedev(self): adb = ADB() devs = adb.devices() if len(devs) == 1: devs1 = devs[0][0] dev1 = connect_device("Android:///%s" % devs1) print(devs1) return dev1 elif len(devs) == 2: devs1 = devs[0][0] devs2 = devs[1][0] dev1 = connect_device("Android:///%s" % devs1) dev2 = connect_device("Android:///%s" % devs2) print(devs1, devs2) return dev1, dev2 else: print('电脑没发现插有手机设备,如有插入手机,请检查相关端口是否被占用?') return False
def getDevice(self): text, ok = (lambda adbList: QInputDialog.getItem( self, '选取设备', '在下拉列表中选择一个设备', adbList, adbList.index(fgoFunc.base.serialno) if fgoFunc.base.serialno and fgoFunc.base.serialno in adbList else 0, True, Qt.WindowStaysOnTopHint))( [i for i, j in ADB().devices() if j == 'device']) if ok and text and text != fgoFunc.base.serialno: fgoFunc.base = fgoFunc.Base(text)