启动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")