-
Notifications
You must be signed in to change notification settings - Fork 1
1. 基本功能
Aues6uen11Z edited this page Oct 25, 2024
·
1 revision
Zafkiel的大部分功能来源于Airtest,建议简单了解一下airtest.core.api,下面将介绍其中与Airtest不一样的部分。
函数签名
def app_is_running() -> bool:
功能:检查应用程序是否正在运行
返回值:返回应用程序是否正在运行的布尔值
支持平台:Windows
函数签名
def screenshot():
功能:获取设备屏幕截图
返回值:返回截图图像
支持平台:Android, Windows, iOS
函数签名
def touch(
v: Union[Template, Tuple[int, int]],
times: int = 1,
interval: float = 0.05,
blind: bool = False,
ocr_mode: int = 0,
cls: Type[Ocr] = Ocr,
local_search: bool = True,
v_name: str = None,
**kwargs
) -> Tuple[int, int]:
功能:在设备屏幕上执行触摸/点击动作
参数
-
v
: 目标对象,可以是Template
实例或绝对坐标(x, y)。 -
times
: 要执行的点击次数,默认为1次。 -
interval
: 两次点击之间的时间间隔,默认为0.05秒。 -
blind
: 是否识别模板,有时候我们只需要点击而不关心图像。 -
ocr_mode
: OCR匹配规则,默认为0,可选值有OCR_EQUAL
(0),OCR_CONTAINS
(1),OCR_SIMILAR
(2)。 -
cls
: "Ocr"类或其子类,默认为Ocr
。 -
local_search
: 如果为True,则仅在屏幕相应位置搜索模板图像;否则,在整个屏幕上搜索。 -
v_name
: 当v
是坐标,但需要一个名字时使用。 -
**kwargs
: 平台特定的关键字参数,请参考对应文档。
返回值:返回最终点击的位置坐标,例如 (100, 100)。
支持平台:Android, Windows, iOS
示例
-
点击绝对坐标:
touch((100, 100))
-
连续点击2次:
touch((100, 100), times=2)
-
在Android和Windows平台上设置点击持续时间:
touch((100, 100), duration=2)
-
在Windows上右键点击:
touch((100, 100), right_click=True)
函数签名
def find_click(
rec_template: Template,
touch_template: Optional[Template] = None,
times: int = 1,
interval: float = 0.05,
timeout: float = 1,
blind: bool = False,
ocr_mode: int = 0,
cls: Type[Ocr] = Ocr,
local_search: bool = True
) -> bool:
功能:查找模板图像并点击它或另一个模板图像区域
参数
-
rec_template
: 要查找的Template
实例。 -
touch_template
: 要点击的Template
实例,默认为None,意味着点击rec_template
。 -
times
: 要执行的点击次数,默认为1次。 -
interval
: 两次点击之间的时间间隔,默认为0.05秒。 -
timeout
: 查找匹配的最大用时,默认为1秒。 -
blind
: 是否识别模板,与touch()
中的参数相同。 -
ocr_mode
: OCR匹配规则,默认为0,可选值有OCR_EQUAL
,OCR_CONTAINS
,OCR_SIMILAR
。 -
cls
: "Ocr"类或其子类,默认为Ocr
。 -
local_search
: 如果为True,则仅在屏幕相应位置搜索模板图像;否则,在整个屏幕上搜索。
返回值:返回目标图像是否出现并被点击
支持平台:Android, Windows, iOS
函数签名
def exists(
v: Template,
timeout: float = 0,
ocr_mode: int = 0,
cls: Type[Ocr] = Ocr,
local_search: bool = True
) -> Union[bool, Tuple[int, int]]:
功能:检查给定的目标是否存在于设备屏幕上
参数
-
v
: 要检查的目标。 -
timeout
: 时间限制,默认为0,意味着loop_find
只会搜索一次。 -
ocr_mode
: OCR匹配规则,默认为0,可选值有OCR_EQUAL
,OCR_CONTAINS
,OCR_SIMILAR
。 -
cls
: "Ocr"类或其子类,默认为Ocr
。 -
local_search
: 如果为True,则仅在屏幕相应位置搜索模板图像;否则,在整个屏幕上搜索。
返回值:如果未找到目标则返回False,否则返回目标的坐标
支持平台:Android, Windows, iOS
示例
if exists(Template(r"tpl1606822430589.png")):
touch(Template(r"tpl1606822430589.png"))
# 由于`exists()`会返回坐标,
# 我们可以直接点击这个返回值以减少一次图像搜索:
pos = exists(Template(r"tpl1606822430589.png"))
if pos:
touch(pos)
函数签名
def wait(
v: Template,
timeout: Optional[float] = None,
interval: float = 0.3,
interval_func: Optional[Callable] = None,
ocr_mode: int = 0,
cls: Type[Ocr] = Ocr,
local_search: bool = True
) -> Tuple[int, int]:
功能:等待在设备屏幕上匹配模板出现
参数
-
v
: 要等待的目标对象,Template
实例。 -
timeout
: 匹配的时间间隔,默认为None,值为ST.FIND_TIMEOUT
。 -
interval
: 尝试查找匹配的时间间隔(秒)。 -
interval_func
: 每次尝试查找目标失败后调用的回调函数。 -
ocr_mode
: OCR匹配规则,默认为0,可选值有OCR_EQUAL
,OCR_CONTAINS
,OCR_SIMILAR
。 -
cls
: "Ocr"类或其子类,默认为Ocr
。 -
local_search
: 如果为True,则仅在屏幕相应位置搜索模板图像;否则,在整个屏幕上搜索。
异常
-
TargetNotFoundError
: 如果超时后未找到目标则抛出此异常。
返回值:返回匹配目标的坐标
支持平台:Android, Windows, iOS
示例
wait(Template(r"tpl1606821804906.png")) # 超时时间为ST.FIND_TIMEOUT
# 每3秒查找一次模板,超时时间为120秒
wait(Template(r"tpl1606821804906.png"), timeout=120, interval=3)
# 可以指定每次查找目标失败时的回调函数:
def notfound():
print("No target found")
wait(Template(r"tpl1607510661400.png"), interval_func=notfound)
函数签名
def swipe(
v1: Union[Template, Tuple[int, int]],
v2: Optional[Union[Template, Tuple[int, int]]] = None,
vector: Optional[Tuple[float, float]] = None,
blind1: bool = False,
blind2: bool = False,
**kwargs
) -> Tuple[Tuple[int, int], Tuple[int, int]]:
功能:在设备屏幕上执行滑动操作
参数
-
v1
: 滑动的起点,可以是Template
实例或绝对坐标(x, y)。 -
v2
: 滑动的终点,可以是Template
实例或绝对坐标(x, y),默认为None。 -
vector
: 滑动动作的向量坐标,可以是绝对坐标(x, y)或屏幕百分比如(0.5, 0.5),默认为None。 -
blind1
: 是否识别Template1
,与touch()
中的参数相同,默认为False。 -
blind2
: 是否识别Template2
,与touch()
中的参数相同,默认为False。 -
**kwargs
: 平台特定的关键字参数,请参考对应文档。
异常
-
ScriptError
:当没有提供足够的参数来执行滑动操作时引发。
返回值:返回起始位置和目标位置
支持平台:Android, Windows, iOS
示例
-
根据向量滑动:
swipe(Template(r"tpl1606814865574.png"), vector=(-0.0316, -0.3311))
-
在两个坐标点间滑动:
swipe((100, 100), (200, 200))
-
自定义滑动持续时间和步骤数(Android 和 iOS):
# 滑动持续1秒,分为6步 swipe((100, 100), (200, 200), duration=1, steps=6)