Beispiel #1
0
 def adb_devices(self):
     """
     获取手机设备号
     :return:
     """
     adb = ADB()
     if not adb.devices():
         raise IndexError('not devices found')
     return adb.devices()
Beispiel #2
0
    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")
Beispiel #3
0
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])
Beispiel #4
0
    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()
Beispiel #5
0
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()
Beispiel #6
0
    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'没发现手机设备')
Beispiel #7
0
 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
Beispiel #8
0
class Driver():
    def start_app(self, uuid):
        init_device(platform="Android", uuid=uuid)  # 初始化设备,并设置为当前设备
        start_app("com.vivalnk.vitalsmonitor")  #打开mvm

    def get_poco(self):
        poco = AndroidUiautomationPoco(screenshot_each_action=False)
        return poco

    def close_app(self):
        stop_app("com.vivalnk.vitalsmonitor")

    def back(self):
        keyevent("KEYCODE_BACK")


if __name__ == '__main__':
    p_list = []
    from multiprocessing import Process
    driver = Driver()
    adb = ADB()
    all_devices = adb.devices()
    for item in range(len(all_devices)):
        # print(all_devices[item][0])
        p = Process(target=driver.start_app, args=(all_devices[item][0], ))
        p.start()
        p_list.append(p)
    for i in p_list:
        i.join()
Beispiel #9
0
class MyWindow(QtWidgets.QMainWindow, Ui_MainWindow, SingleInst):
    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 InitListWidget(self):
        self.m_DeviceListWidget = CMyListWidget(self.listWidget, self.checkBox)
        self.m_ScriptListWidget = CMyListWidget(self.LWScripts, self.CBScripts)

    def InitSignal(self):
        self.RefreshBtn.clicked.connect(self.RefreshADB)
        # self.BtnRefreshScripts.clicked.connect(self.RefreshScripts)
        self.BtnLaunch.clicked.connect(self.Lauch)
        self.BtnSelectScripts.clicked.connect(self.SelectScriptRoot)
        self.checkBox.stateChanged.connect(self.m_DeviceListWidget.SelcetAll)
        self.CBScripts.stateChanged.connect(self.m_ScriptListWidget.SelcetAll)
        self.BtnConnect.clicked.connect(self.ConnectRemoteADB)

    def RefreshADB(self):
        lDevices = [(tDevice, tDevice[1] == 'device')
                    for tDevice in self.m_ADB.devices()]
        self.m_DeviceListWidget.Refresh(lDevices)

    def RefreshScripts(self):
        if not self.m_ScriptRoot:
            utils.SetCfgData('scripts_root', DEFAULT_SCRIPTS_ROOT)
            self.m_ScriptRoot = DEFAULT_SCRIPTS_ROOT
            if not os.path.exists(self.m_ScriptRoot):
                os.mkdir(self.m_ScriptRoot)
        self.LScriptsRoot.setText(self.m_ScriptRoot)
        lScripts = [(sScript, True)
                    for sScript in os.listdir(self.m_ScriptRoot)
                    if sScript.endswith('.air')]
        self.m_ScriptListWidget.Refresh(lScripts)

    def SelectScriptRoot(self):
        sDirChoose = QtWidgets.QFileDialog.getExistingDirectory(
            self, "选取文件夹", self.m_ScriptRoot)
        if sDirChoose == "":
            return
        self.m_ScriptRoot = sDirChoose
        self.RefreshScripts()

    def ShowReport(self, sCombineLog):
        self.m_Running = False
        import webbrowser
        reply = QtWidgets.QMessageBox.question(
            self, "Question", self.tr("测试结束,点击查看报告"),
            QtWidgets.QMessageBox.Ok | QtWidgets.QMessageBox.Cancel,
            QtWidgets.QMessageBox.Ok)
        if reply == QtWidgets.QMessageBox.Ok:
            webbrowser.open(sCombineLog, new=0, autoraise=True)
        elif reply == QtWidgets.QMessageBox.Cancel:
            print('点击了取消,报告路径:%s' % sCombineLog)
        else:
            return

    def Lauch(self):
        if self.m_Running:
            QtWidgets.QMessageBox.information(self, "提示", self.tr("正在运行中!"))
            return

        lDevices = self.m_DeviceListWidget.GetSelectedList()
        lScripts = self.m_ScriptListWidget.GetSelectedList()
        if not lDevices:
            QtWidgets.QMessageBox.warning(self, "提示", self.tr("请选择设备!"))
            return
        if not lScripts:
            QtWidgets.QMessageBox.warning(self, "提示", self.tr("请选择脚本!"))
            return
        sMode = self.CBMode.currentText()[-1]
        utils.SetCfgData(CFG_SCRIPTS, ','.join(lScripts))
        utils.SetCfgData(CFG_DEVICES, ','.join(lDevices))
        utils.SetCfgData(CFG_MODE, sMode)
        utils.SetCfgData(CFG_SCRIPTS_ROOT, self.m_ScriptRoot)
        utils.SetCfgData(CFG_PLATFORM, 'Android')
        self.m_Running = True
        self.m_RunThread = CRunthread()
        self.m_RunThread._signal.connect(self.ShowReport)
        self.m_RunThread.start()

    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()
Beispiel #10
0
import time

import cv2
from airtest.core.android.adb import ADB
from airtest.core.android.minicap import Minicap

adb = ADB(
    # serialno='emulator-5554',
    # adb_path=None,
    # server_addr=None,
    # display_id=None,
    # input_event=None
)

devices_list = adb.devices()
adb.serialno = devices_list[0][0]

mcap = Minicap(adb)

import matplotlib.pyplot as plt  # plt 用于显示图片
import matplotlib.image as mpimg  # mpimg 用于读取图片
import numpy as np

# lena = mpimg.imread('lena.png') # 读取和代码处于同一目录下的 lena.png
# 此时 lena 就已经是一个 np.array 了,可以对它进行任意处理
# lena.shape #(512, 512, 3)

for frame in mcap.get_stream():
    st = time.time()
    nparr = np.frombuffer(frame, np.uint8)
    img = cv2.imdecode(nparr, cv2.IMREAD_COLOR)