Beispiel #1
0
def get_connect_devices():
    """
    返回连接设备列表
    :return: 返回连接设备列表
    """
    devices = []
    # 有设备连接才显示
    if not check_is_none(android.ids):
        devices.append(android.ids)
    if not check_is_none(ios.ids):
        devices.append(ios.ids)

    return devices
Beispiel #2
0
 def devices(self):
     """
     获取当前连接的设备
     :return: 设备列表
     """
     devices = []
     output = run_command('idevice_id -l')
     # 先判断有没有设备连接
     if check_is_none(output):
         logging.warning(r'当前无 iOS 设备连接')
         return None
     origin_list = output.split('\n')
     for d in origin_list:
         if not check_is_none(d):
             devices.append(d)
     logging.info(r'获取到已连接的设备:{0}'.format(devices))
     return devices
Beispiel #3
0
def print_connect_device():
    """
    输出当前连接的 Android 和 iOS 设备列表

    输出格式:
    {
        "android": ['dsfkjw', 'werwr'],
        "ios": ['ertgffddfg', 'dfgd']
    }

    :return: 设备列表
    """
    print_devices = {}
    # 有设备连接才显示
    if not check_is_none(android.ids):
        print_devices['android'] = android.ids
    if not check_is_none(ios.ids):
        print_devices['ios'] = ios.ids
    json_print(print_devices)
Beispiel #4
0
def run_device_cmd(fun_name, device_id=None):
    """
    获得设备相关信息的基础方法,所有命令行均可以套取此方法的使用
    :param fun_name: 相关命令行函数
    :param device_id: 设备号
    :return: 设备信息的dict字符串
    """
    device_dict = {}

    # 判断当前设备是否连接为空
    connect_devices = get_connect_devices()
    if check_is_none(device_id) and not check_is_none(connect_devices):
        return run_device_cmd(fun_name, device_id=connect_devices)
    else:
        if type(device_id) is str:
            # 判断当前设备号是 Android 还是 iOS
            if not check_is_none(android.ids) and device_id in android.ids:
                obj = android
            elif not check_is_none(ios.ids) and device_id in ios.ids:
                obj = ios
            else:
                error_mes = r"输入的设备号错误,请重新尝试。"
                logging.error(error_mes)
                raise ValueError(error_mes)

            # 改用getatter方法, 并运行
            device_dict = getattr(obj, fun_name)(id=device_id)

        elif type(device_id) is list:
            devices_dict = {}
            for aid in device_id:
                tmp_dict = run_device_cmd(fun_name, device_id=aid)
                if not check_is_none(tmp_dict):
                    devices_dict.update(tmp_dict)
            device_dict.update(devices_dict)
        else:
            pass

    return json_print(device_dict)
Beispiel #5
0
 def devices(self):
     """
     获取当前连接的设备
     :return: 设备列表
     """
     devices = []
     output = run_command('adb devices')
     lines = output.split('\n')
     for i in range(1, len(lines)):
         if 'device' in lines[i]:
             devices.append(lines[i].replace('\tdevice', ''))
     logging.info(r'获取到已连接的设备:{0}'.format(devices))
     if check_is_none(devices):
         logging.warning(r'当前无 Android 设备连接')
         return None
     return devices
Beispiel #6
0
 def device_screenshot(self, id=None):
     """
     对指定设备进行截屏,并放到电脑的桌面上
     :param id: 设备号
     """
     device_name = self.device_name(id)
     version = self.device_version(id)
     screen_file = '{0}-{1}-{2}.png'.format(device_name, version,
                                            get_time())
     screen_path = '{0}/Desktop/{1}'.format(os.environ['HOME'], screen_file)
     logging.info(r'截图存放路径:{0}'.format(screen_path))
     screen_log = run_command('idevicescreenshot -u {0} {1}'.format(
         id, screen_path))
     if not check_is_none(
             screen_log
     ) and 'Could not start screenshotr service' in screen_log:
         print(r'iOS 截屏服务出错,请修复')
         logging.error(screen_log)
         exit(1)
     print(r"'{0}'截屏成功,存放路径为'{1}'".format(device_name, screen_path))
Beispiel #7
0
 def test_check_is_none(self):
     self.assertEqual(True, utils.check_is_none(''))
     self.assertEqual(True, utils.check_is_none(None))
     self.assertEqual(True, utils.check_is_none([]))
     self.assertEqual(False, utils.check_is_none('Test'))
     self.assertEqual(False, utils.check_is_none(['a', 'b']))