Skip to main content

控件对象

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)
  • 参数
参数类型是否必填说明
xint屏幕 x 坐标,单位 px
yint屏幕 y 坐标,单位 px
clientobject指定连接客户端,默认使用当前系统客户端
  • 返回值

命中控件时返回控件对象;该坐标无控件时返回 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

rectbounds 返回同一个位置对象,坐标单位为屏幕像素(px)。

属性说明
xx 坐标
yy 坐标
left左边坐标,同 x
top顶部坐标,同 y
right右边坐标
bottom底部坐标
width控件宽度
height控件高度
center控件中心点,可通过 center.xcenter.y 获取
origin控件起点,可通过 origin.xorigin.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)
  • 参数
参数类型是否必填说明
durfloat点击持续时间(秒),默认0.02秒
  • 示例
#案例:找到汽水音乐图标,并点击
from ascript.ios.node import Selector
node = Selector().label("汽水音乐").type("XCUIElementTypeIcon").find()

if node:
# 获取node 控件的父元素
node.click()

长按

长按该控件

  • 函数
.tap_hold(duration=1000)
  • 参数
参数类型是否必填说明
durationint点按时长,单位毫秒. 默认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)
  • 参数
参数类型是否必填说明
directionstr"visible", "up", "down", "left", "right" 其中之一,默认visible:滚动至显示
distancefloat滑动屏数,默认1.0:1屏
  • 返回值

[Node] 控件对象

  • 示例
#案例:滚动至显示到屏幕中
from ascript.ios.node import Selector
node = Selector().label("汽水音乐").type("XCUIElementTypeIcon").find()

if node:
node.scroll()

缩放 pinch

对控件执行缩放手势

  • 函数
.pinch(scale, velocity)
  • 参数
参数类型是否必填说明
scalefloat缩放比例,大于1为放大,小于1为缩小
velocityfloat缩放速度
  • 示例
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)
  • 参数
参数类型是否必填说明
valuestr要设置的文本
  • 返回值

[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()