控件对象
from ascript.ios.node import Node, Selector
通过控件选择器 Selector() .find()、.find_all(),或 Node.at(x, y) 获得此对象。
获取控件对象
Selector 查找
from ascript.ios.node import Selector
node = Selector().label("确定").find()
nodes = Selector().type("XCUIElementTypeButton").find_all()
坐标直查 Node.at
Node.at(x, y) 用于直接获取屏幕坐标处最深层的可点击控件。坐标单位为屏幕像素(px),与 action.click(x, y) 的坐标一致。
- 函数
Node.at(x, y, client=None)
- 参数
| 参数 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
| x | int | 是 | 屏幕 x 坐标,单位 px |
| y | int | 是 | 屏幕 y 坐标,单位 px |
| client | object | 否 | 指定连接客户端,默认使用当前系统客户端 |
- 返回值
命中控件时返回控件对象;该坐标无控件时返回 None。
- 示例
from ascript.ios.node import Node
node = Node.at(300, 600)
if node:
print(node.label, node.rect)
node.click()
属性
以下属性均通过 node.xxx 方式获取,不需要加括号。
| 属性 | 备注 |
|---|---|
| id | 控件 ID |
| label | 控件描述 |
| value | 控件的值 |
| text | 控件文本,优先取 label,为空时取 value |
| name | 控件名称 |
| type | 控件类型,同 className |
| className | 控件类型,同 type |
| index | 控件排序 |
| rect | 控件在屏幕中的位置,返回 Rect 对象 |
| bounds | 控件在屏幕中的位置,同 rect |
| enabled | 控件是否可用 |
| displayed | 控件是否显示 |
| visible | 控件是否可见 |
| accessible | 是否可无障碍操作 |
| accessibility_container | 是否为无障碍容器 |
| info | 控件信息字 典 |
rect / bounds
rect 和 bounds 返回同一个位置对象,坐标单位为屏幕像素(px)。
| 属性 | 说明 |
|---|---|
| x | x 坐标 |
| y | y 坐标 |
| left | 左边坐标,同 x |
| top | 顶部坐标,同 y |
| right | 右边坐标 |
| bottom | 底部坐标 |
| width | 控件宽度 |
| height | 控件高度 |
| center | 控件中心点,可通过 center.x、center.y 获取 |
| origin | 控件起点,可通过 origin.x、origin.y 获取 |
node = Selector().label("确定").find()
if node:
rect = node.rect
print(rect.x, rect.y, rect.width, rect.height)
print(rect.center.x, rect.center.y)
info
info 返回常用属性组成的字典。
node = Selector().label("确定").find()
if node:
print(node.info)
方法
点击
点击该控件
- 函数
.click(dur=0.02)
- 参数
| 参数 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
| dur | float | 否 | 点击持续时间(秒),默认0.02秒 |
- 示例
#案例:找到汽水音乐图标,并点击
from ascript.ios.node import Selector
node = Selector().label("汽水音乐").type("XCUIElementTypeIcon").find()
if node:
# 获取node 控件的父元素
node.click()
长按
长按该控件
- 函数
.tap_hold(duration=1000)
- 参数
| 参数 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
| duration | int | 否 | 点按时长,单位毫秒. 默认1000毫秒 |
- 示例
#案例:找到汽水音乐图标,并长按2秒
from ascript.ios.node import Selector
node = Selector().label("汽水音乐").type("XCUIElementTypeIcon").find()
if node:
# 获取node 控件的父元素
node.tap_hold(2000)
点按 tap
直接点击该控件(底层原始点击)
- 函数
.tap()
- 示例
from ascript.ios.node import Selector
node = Selector().label("确定").find()
if node:
node.tap()
滚动控件
按照参数,滚动控件
- 函数
.scroll(direction='visible', distance=1.0)
- 参数
| 参数 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
| direction | str | 否 | "visible", "up", "down", "left", "right" 其中之一,默认visible:滚动至显示 |
| distance | float | 否 | 滑动屏数,默认1.0:1屏 |
- 返回值
[Node] 控件对象
- 示例
#案例:滚动至显示到屏幕中
from ascript.ios.node import Selector
node = Selector().label("汽水音乐").type("XCUIElementTypeIcon").find()
if node:
node.scroll()
缩放 pinch
对控件执行缩放手势
- 函数
.pinch(scale, velocity)
- 参数
| 参数 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
| scale | float | 是 | 缩放比例,大于1为放大,小于1为缩小 |
| velocity | float | 是 | 缩放速度 |
- 示例
from ascript.ios.node import Selector
node = Selector().type("XCUIElementTypeImage").find()
if node:
node.pinch(2.0, 1.0) # 放大2倍
是否选中 selected
获取控件的选中状态
- 函数
.selected()
- 返回值
[bool] 是否选中
- 示例
from ascript.ios.node import Selector
node = Selector().label("开关").find()
if node:
print("选中状态:", node.selected())
设置控件文本
设置控件的文本
- 函数
.set_text(value)
- 参数
| 参数 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
| value | str | 是 | 要设置的文本 |
- 返回值
[Node] 控件对象
- 示例
#案例:找到输入框控件,并向其输入自在老师666
from ascript.ios.node import Selector
node = Selector().type("XCUIElementTypeTextField").enabled(True).find()
if node:
node.set_text("自在老师666")
清空控件文本
设置控件的文本
- 函数
.clear_text()
- 参数
无
- 返回值
[Node] 控件对象
- 示例
#案例:找到输入框控件,并清空其中的文本
from ascript.ios.node import Selector
node = Selector().type("XCUIElementTypeTextField").enabled(True).find()
if node:
node.clear_text()