def connect_usb(serial=None): """ Args: serial (str): android device serial Returns: UIAutomatorServer """ adb = adbutils.Adb(serial) lport = adb.forward_port(7912) d = connect_wifi('127.0.0.1:' + str(lport)) if not d.agent_alive: warnings.warn("backend atx-agent is not alive, start again ...", RuntimeWarning) # TODO: /data/local/tmp might not be execuable and atx-agent can be somewhere else adb.shell("/data/local/tmp/atx-agent", "server", "-d") deadline = time.time() + 3 while time.time() < deadline: if d.alive: break elif not d.alive: warnings.warn("backend uiautomator2 is not alive, start again ...", RuntimeWarning) d.reset_uiautomator() return d
def connect_usb(serial=None): """ Args: serial (str): android device serial """ adb = adbutils.Adb(serial) lport = adb.forward_port(7912) return connect('127.0.0.1:'+str(lport))
def init(self, server=None, apk_version=__apk_version__, agent_version=__atx_agent_version__, verbose=False, reinstall=False, ignore_apk_check=False, proxy=None, serial=None, mirror=False): if verbose: log.setLevel(logging.DEBUG) if server: log.info("atx-server addr %s", server) if mirror: global GITHUB_BASEURL GITHUB_BASEURL = "https://github-mirror.open.netease.com/openatx" if proxy: os.environ['HTTP_PROXY'] = proxy os.environ['HTTPS_PROXY'] = proxy if not serial: valid_serials = [ sn for sn, _ in adbutils.Adb().devices(states=['device']) ] # output = subprocess.check_output(['adb', 'devices']) # pattern = re.compile( # r'(?P<serial>[^\s]+)\t(?P<status>device|offline)') # matches = pattern.findall(output.decode()) # valid_serials = [m[0] for m in matches if m[1] == 'device'] if len(valid_serials) == 0: log.warning("No avaliable android devices detected.") return valid_serials = [d.get_serial_no() for d in valid_serials] log.info("Detect pluged devices: %s", valid_serials) for serial in valid_serials: self._init_with_serial(serial, server, apk_version, agent_version, reinstall, ignore_apk_check) else: # Pass in serials such as 8734e3576, which would otherwise be floating point.. keep ints safe # Prefix with "str:", so for example # python3 -m uiautomator2 init --serial str:8734e3576 if hasattr(serial, 'split'): serial = serial.split('str:')[-1] self._init_with_serial(serial, server, apk_version, agent_version, reinstall, ignore_apk_check)
def init(self, server=None, apk_version=__apk_version__, agent_version=__atx_agent_version__, verbose=False, reinstall=False, ignore_apk_check=False, proxy=None, serial=None, mirror=False): if verbose: log.setLevel(logging.DEBUG) if server: log.info("atx-server addr %s", server) if mirror: global GITHUB_BASEURL GITHUB_BASEURL = "https://github-mirror.open.netease.com/openatx" if proxy: os.environ['HTTP_PROXY'] = proxy os.environ['HTTPS_PROXY'] = proxy if not serial: valid_serials = [ sn for sn, _ in adbutils.Adb().devices(states=['device']) ] # output = subprocess.check_output(['adb', 'devices']) # pattern = re.compile( # r'(?P<serial>[^\s]+)\t(?P<status>device|offline)') # matches = pattern.findall(output.decode()) # valid_serials = [m[0] for m in matches if m[1] == 'device'] if len(valid_serials) == 0: log.warning("No avaliable android devices detected.") return log.info("Detect pluged devices: %s", valid_serials) for serial in valid_serials: self._init_with_serial(serial, server, apk_version, agent_version, reinstall, ignore_apk_check) else: self._init_with_serial(serial, server, apk_version, agent_version, reinstall, ignore_apk_check)
def connect_usb(serial=None): adb = adbutils.Adb(serial) lport = adb.forward_port(7912) return connect('127.0.0.1:' + str(lport))