连接雷电模拟器,执行uiaumator2脚本

启动uiaumator2,先判断雷电模拟器是否运行,当前这样问题还是雷电模拟器崩溃、offline问题。
雷电模拟器支持的app也不多,连百度app都打不开。。。

import uiautomator2 as u2
import time
import unittest
from M_Call.common import public_param
import subprocess
from subprocess import Popen, PIPE
from M_Call.common import shut_down_all_dnp
import re
import sys


class CheckDnplayer(unittest.TestCase):

    def check_devices(self):
        is_wait = True

        ps = subprocess.Popen("adb devices", shell=True, stdout=PIPE, stderr=PIPE)
        out = ps.stdout.read().decode('utf-8')
        print("press adb device:%s" % out)

        target_device_name = ""
        ps = subprocess.Popen("adb devices", shell=True, stdout=PIPE, stderr=PIPE)
        out = ps.stdout.read().decode('utf-8')

        split_a = out.split("\n")
        for line in split_a:
            print(line)
            if "127.0.0.1:" in line and "offline" not in line:
                result = re.match(r"127.0.0.1:55\d+", line)
                if result:
                    target_device_name = result.group(0)
                    print("selected device %s" % result.group(0))
                    break

        ps.stdout.close()

        connect_device_str = "adb connect %s" % target_device_name
        print("connect_device_str %s" % connect_device_str)

        max_try = 100
        while is_wait:
            if max_try < 0:
                print(">>>无法连接模拟器")
                shut_down_all_dnp.ShutDownDnplayer().stop_dnp()
                sys.exit(0)

            ps2 = subprocess.Popen(connect_device_str, shell=True, stdout=PIPE, stderr=PIPE)
            out2 = ps2.stdout.read().decode('utf-8')
            print("after connect %s" % out2)
            if ("already connected to %s" % target_device_name) in out2:
                return target_device_name
            else:
                time.sleep(10)
                print("choose sleep")
                max_try -= 1
            ps2.stdout.close()
        return target_device_name


class MTest(unittest.TestCase):
    device_name = None

    @classmethod
    def setUpClass(cls):
        pass
        cls.device_name = CheckDnplayer().check_devices()

    @classmethod
    def tearDownClass(cls):
        pass
        # CheckDnplayer().close_dnp()

    def tearDown(self):
        # 添加全局变量,拿取失败用的描述DOC
        errors = self._outcome.errors
        for test, exc_info in errors:
            if exc_info:
                if test._testMethodDoc not in public_param.PubliccParam.fail_name_list:
                    if "retry" not in test._testMethodDoc:
                        public_param.PubliccParam.fail_name_list.append(test._testMethodDoc)
        self.d.app_stop("com.android.browser")

    def setUp(self):
        print(">> devices connect_usb %s" % self.device_name)
        self.d = u2.connect_usb(self.device_name)
        self.s = self.d.session()
        self.d.app_start("com.android.browser")
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容