控件对象
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()