qt4i.device Package

iOS设备模块

class qt4i.device.Device(attrs={}, devicemanager=None)

基类:object

iOS设备基类(包含基于设备的UI操作接口)

call_qt4i_stub(method, params, clazz=None)

QT4i Stub通用接口

参数:
  • method (str) – 函数名
  • params (list) – 函数参数
  • clazz (str) – 类名
返回:

插桩接口返回值

返回类型:

str

cleanup_log()

清理交互日志

click(x=0.5, y=0.5)

点击屏幕

参数:
  • x (float) – 横向坐标(从左向右,屏幕百分比)
  • y (float) – 纵向坐标(从上向下,屏幕百分比)
click2(element)

基于控件坐标点击屏幕(用于直接点击控件无效的场景,尽量少用)

参数:element (Element) – 控件对象
copy_to_local(bundle_id, remotepath, localpath=None, is_dir=False, is_delete=True)

拷贝手机中sandbox指定目录的文件到Mac本地

参数:
  • bundle_id (str) – app的bundle id
  • remotepath (str) – sandbox上的目录或者文件,例如:/Library/Caches/test/
  • localpath (str) – 本地的目录
  • is_dir (boolean) – remotepath是否为目录,默认为单个文件
返回:

拷贝到本地的文件列表

返回类型:

list or None

deactivate_app_for_duration(seconds=3)

将App置于后台一定时间

参数:seconds (int) – 秒,若为-1,则模拟按Home键的效果,也即app切到后台后必须点击app才能再次唤起
返回:boolean
double_click(x, y)

双击屏幕

参数:
  • x (float) – 横向坐标(从左向右计算,屏幕百分比)
  • y (float) – 纵向坐标(从上向下计算,屏幕百分比)
download_file(file_url, dst_path)

从网上下载指定文件到本地

参数:
  • file_url (str) – 文件的url路径,支持http和https路径, 需要对app插桩
  • dst_path (str) – 文件在手机上的存储路径,例如:/Documents
drag(from_x=0.9, from_y=0.5, to_x=0.1, to_y=0.5, duration=0.5)

回避屏幕边缘,全屏拖拽(默认在屏幕中央从右向左拖拽)

参数:
  • from_x (float) – 起点 x偏移百分比(从左至右为0.0至1.0)
  • from_y (float) – 起点 y偏移百分比(从上至下为0.0至1.0)
  • to_x (float) – 终点 x偏移百分比(从左至右为0.0至1.0)
  • to_y (float) – 终点 y偏移百分比(从上至下为0.0至1.0)
  • duration (float) – 持续时间(秒)
drag2(direct='Left')

回避屏幕边缘,全屏在屏幕中央拖拽

参数:direct (EnumDirect.Left|EnumDirect.Right|EnumDirect.Up|EnumDirect.Down) – 拖拽的方向
driver

设备所在的driver

返回类型:RPCClientProxy
flick(from_x=0.9, from_y=0.5, to_x=0.1, to_y=0.5)

回避屏幕边缘,全屏滑动/拂去(默认从右向左滑动/拂去) 该接口比drag的滑动速度快,如果滚动距离大,建议用此接口

参数:
  • from_x (float) – 起点 x偏移百分比(从左至右为0.0至1.0)
  • from_y (float) – 起点 y偏移百分比(从上至下为0.0至1.0)
  • to_x (float) – 终点 x偏移百分比(从左至右为0.0至1.0)
  • to_y (float) – 终点 y偏移百分比(从上至下为0.0至1.0)
flick2(direct='Left')

回避屏幕边缘,全屏在屏幕中央滑动/拂去

参数:direct (EnumDirect.Left|EnumDirect.Right|EnumDirect.Up|EnumDirect.Down) – 滑动/拂去的方向
flick3(from_x=0.5, from_y=0.8, to_x=0.5, to_y=0.2, repeat=1, interval=0.5, velocity=1000)

全屏连续滑动(默认从下向滑动) 该接口比flick2的滑动速度快,适用于性能测试

参数:
  • from_x (float) – 起点 x偏移百分比(从左至右为0.0至1.0)
  • from_y (float) – 起点 y偏移百分比(从上至下为0.0至1.0)
  • to_x (float) – 终点 x偏移百分比(从左至右为0.0至1.0)
  • to_y (float) – 终点 y偏移百分比(从上至下为0.0至1.0)
  • repeat (int) – 滑动的次数
  • interval (double) – 滑动的间隔时间(秒)
  • velocity (double) – 滑动的速度
get_app_list(app_type='user')

获取设备上的app列表

参数:app_type (str) – app的类型(user/system/all)
返回:list
返回类型:app列表,例如: [{‘com.tencent.demo’: ‘Demo’}]
get_crash_log(procname)

获取指定进程的最新的crash日志

参数:proc_name (str) – app的进程名,可通过xcode查看
返回:crash日志路径
返回类型:string or None
get_device_detail()

获取设备型号,颜色,内存大小等详细信息

get_driver_log(start_time=None)

获取driver日志 :param start_time 用例执行的开始时间 :type str

try-catch 说明:为了兼容client以及server端,对取失败用例日志的操作(后续接口更新可删除)

get_foreground_app_name()

获取前台app的名称

get_foreground_app_pid()

获取前台app的PID

get_icon_badge(app_name)

获取设备中app消息未读数

get_log(start_time=None)

获取交互日志 :param start_time 用例执行的开始时间 :type str

try-catch 说明:为了兼容client以及server端,对取失败用例日志的操作(后续接口更新可删除)

get_syslog(watchtime, process_name=None)

获取手机系统日志

install(app_path)

安装应用程序

参数:app_path (str) – ipa或app安装包的路径(注意:真机和模拟器的安装包互不兼容)
返回类型:boolean
ios_version

iOS版本

返回类型:str
keyboard

获取键盘

list_files(bundle_id, file_path)

列出手机上app中的文件或者目录

参数:
  • bundle_id (str) – app的bundle id
  • file_path (str) – sandbox上的目录或者文件,例如:/Library/Caches/test/
lock()

锁定设备(灭屏)

long_click(x, y, duration=3)

长按屏幕

参数:
  • x (float) – 横向坐标(从左向右,屏幕百分比)
  • y (float) – 纵向坐标(从上向下,屏幕百分比)
  • duration (float) – 持续时间(秒)
name

设备名

返回类型:str
print_uitree(need_back=False)

打印界面树

参数:need_back (boolean) – 是否需要返回UI Tree
返回:控件树
返回类型:dict or None
pull_file(bundle_id, remotepath, localpath=None, is_dir=False, is_delete=True)

拷贝手机中sandbox指定目录的文件到Mac本地

参数:
  • bundle_id (str) – app的bundle id
  • remotepath (str) – sandbox上的目录或者文件,例如:/Library/Caches/test/
  • localpath (str) – 本地的目录
  • is_dir (boolean) – remotepath是否为目录,默认为单个文件
返回:

拷贝到本地的文件列表

返回类型:

list or None

push_file(bundle_id, localpath, remotepath)

拷贝Mac本地文件到手机中sandbox的指定目录地

参数:
  • bundle_id (str) – app的bundle id
  • localpath (str) – 文件路径,支持本地文件路径和http路径
  • remotepath (str) – iPhone上的目录或者文件,例如:/Documents/
返回类型:

boolean

reboot()

重启手机

rect

屏幕大小

返回类型:Rectangle
release()

释放设备

remove_file(bundle_id, file_path)

删除手机上app中的文件或者目录(主要用于app的日志或者缓存的清理)

参数:
  • bundle_id (str) – app的bundle id
  • file_path (str) – sandbox上的目录或者文件,例如:/Library/Caches/test/
remove_files(bundle_id, file_path)

删除手机上app中的文件或者目录(主要用于app的日志或者缓存的清理)

参数:
  • bundle_id (str) – app的bundle id
  • file_path (str) – sandbox上的目录或者文件,例如:/Library/Caches/test/
reset_host_proxy()

关闭host代理

screenshot(image_path=None)

截屏,返回元组:截屏是否成功,图片保存路径

参数:image_path (str) – 截屏图片的存放路径
返回类型:tuple (boolean, str)
set_host_proxy(server, port, wifi)

设置host代理

参数:
  • server (str) – 服务器名
  • port (int) – 端口号
  • wifi (str) – wifi名
simulator

是否模拟器

返回类型:boolean
start_app(bundle_id, app_params, env, trace_template=None, trace_output=None, retry=5, timeout=55)

启动APP

参数:
  • bundle_id (str) – APP Bundle ID
  • app_params (dict) – app启动参数
  • env (dict) – app的环境变量
  • trace_template (str) – 专项使用trace_template路径,或已配置的项
  • trace_output (str) – 专项使用trace_output路径
  • retry (int) – 重试次数(建议大于等于2次)
  • timeout (int) – 单次启动超时(秒)
  • instruments_timeout (int) – 闲置超时(秒)
返回类型:

boolean

stop_app()

终止APP

返回类型:boolean
switch_network(network_type, nlc_type)

实现网络切换

参数:
  • network_type (int) – 网络类型,例如: 0:无WIFI无xG 1:无WIFi有xG 2:有WIFI无xG 3:有WIFI有xG 4:飞行模式
  • nlc_type (NLCType) – 模拟弱网络类型
udid

设备的udid

返回类型:str
uninstall(bundle_id)

卸载应用程序

参数:bundle_id (str) – APP的bundle_id,例如:com.tencent.qq.dailybuild.test
返回类型:boolean
unlock()

解锁设备

upload_photo(photo_path, album_name, cleared=True)

上传照片到系统相册

参数:
  • photo_path (str) – 本地照片路径
  • album_name (str) – 系统相册名
  • cleared (boolean) – 是否清空已有的同名相册
返回类型:

boolean

class qt4i.device.DeviceManager

基类:object

设备管理类,用于多个设备的申请、查询和管理(此类仅用于Device内部,测试用例中请勿直接使用)

static update_local_devices()

更新本地设备列表

class qt4i.device.DeviceResource(host, port, udid, is_simulator, name, version, csst_uri=None, resource_id=None)

基类:object

设备资源

class qt4i.device.DeviceServer(addr, port, udid=None, agent_port=8100, driver_type='xctest', endpoint_clss='')

基类:object

设备服务器

debug()

调试模式启动driverserver

exist()

driverserver进程是否存在

get_pid()

Returns the PID from pidfile

restart()

重启

start()

启动

stop()

停止

class qt4i.device.IOSDeviceResourceHandler(resource_lock_type=<class 'testbase.resource.LocalResourceLock'>)

基类:testbase.resource.LocalResourceHandler

iOS设备资源的本地管理

iter_resource(res_group=None, condition=None)

遍历全部资源(可以按照优先级顺序返回来影响申请资源的优先级)

参数:
  • res_type (str) – 资源类型
  • res_group (str) – 资源分组
  • condition (dict) – 资源属性匹配
返回:

iterator of resource, dict type with key ‘id’

Rtypes:

iterator(dict)

class qt4i.device.Keyboard(device)

基类:object

键盘

send_keys(keys)

键盘输入

参数:keys (str) – 要输入的字符串