示例#1
0
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
示例#2
0
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))
示例#3
0
    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)
示例#4
0
    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)
示例#5
0
def connect_usb(serial=None):
    adb = adbutils.Adb(serial)
    lport = adb.forward_port(7912)
    return connect('127.0.0.1:' + str(lport))