Skip to main content

控件查找器

from ascript.ios.node import Selector

控件查找器,通过约束方法,和查询方法,来获取屏幕中满足条件的控件.

方法

创建查找器

创建一个控件查找器

  • 函数
#class
Selector()
  • 参数

  • 示例
from ascript.ios.node import Selector
# 创建一个选择器
selector = Selector()

查找控件一个

查找控件,返回一个满足条件的控件

  • 函数
#class
Selector().find()
  • 返回值

Element 控件对象


  • 示例
#案例:查找出符合条件的第一个控件
from ascript.ios.node import Selector
node = Selector().find()

if node:
#找到了控件
print(node)
#打印控件属性,耗时操作
print(node.info)
else:
print('没有找到任何控件')

查找控件全部

查找控件,返回满足条件的控件

  • 函数
#class
Selector().find_all()
  • 参数

  • 返回值

Node[] 控件对象列表

  • 示例
#案例:查找出所有符合条件的控件
from ascript.ios.node import Selector
nodes = Selector().find_all()

if nodes:
#找到了一组控件
print( len(nodes) )
else:
print('没有找到任何控件')

获取所有控件xml信息

该方法一般不推荐使用

xml信息获取非常耗时,效率远低于xpath约束,或属性约束.

  • 函数
Selector.xml()
  • 返回值

当前app xml 控件树信息

  • 示例
# 获取当前应用的 xml控件树信息. 控件越多,速度越慢.
from ascript.ios.node import Selector
xml_info = Selector.get_xml()
print(xml_info)

xpath约束

通过xpath检索控件

xpath约束使用后,属性约束,和关系约束 将不再生效.
  • 函数
Selector().xpath(value:str)
  • 参数
参数类型是否必填说明
valuestrxpath数据,xpath语法快速入门视频教程
  • 示例
# 找到 属性名name 值为 开发者的控件
from ascript.ios.node import Selector
node = Selector().xpath("//*[@name='开发者']").find()
if node:
#找到了控件
print(node)
#打印控件属性,比较耗时
print(node.info)
else:
print('没有找到任何控件')

属性约束

标签 label

通过 label 检索控件

label一般指显示在屏幕中的文字

  • 函数
Selector().label(value:str,mode=MODE_EQUAL)
  • 参数
参数类型是否必填说明
valuestr控件label值
modeint匹配模式
默认Selector.MODE_EQUAL:完全相同
Selector.MODE_CONTAINS:包含在其中
  • 返回值

Selector 返回控件查找器,用于链式编程

  • 示例
# 查找label值“等于”Ascript文本的控件
from ascript.ios.node import Selector
node = Selector().label("Keep").find()
if node:
#找到了控件
print(node)
#打印控件属性,比较耗时
print(node.info)
else:
print('没有找到任何控件')
# 查找label值 “包含 ”Ascript文本的控件
from ascript.ios.node import Selector
node = Selector().label("Kee",Selector.MODE_CONTAINS).find()
if node:
#找到了控件
print(node)
#打印控件属性,比较耗时
print(node.info)
else:
print('没有找到任何控件')

值 value

通过 value 检索控件

value 一般指控件的附加值,可通过控件查看器查找.

  • 函数
Selector().value(value:str,mode=MODE_EQUAL)
  • 参数
参数类型是否必填说明
valstr控件value值
modeint匹配模式
默认Selector.MODE_EQUAL:完全相同
Selector.MODE_CONTAINS:包含在其中
  • 返回值

Selector 返回控件查找器,用于链式编程

  • 示例
# 查找value值“等于”Ascript文本的控件
from ascript.ios.node import Selector
node = Selector().value("在iCloud中").find()

if node:
#找到了控件
print(node)
#打印控件所有属性,较为耗时
print(node.info)
else:
print('没有找到任何控件')
# 查找value值“包含”Ascript文本的控件
from ascript.ios.node import Selector
node = Selector().value("iCloud",Selector.MODE_CONTAINS).find()

if node:
#找到了控件
print(node)
#打印控件所有属性,较为耗时
print(node.info)
else:
print('没有找到任何控件')

名称 name

通过 name 检索控件

name 一般指控件的名称属性.

  • 函数
Selector().name(value:str,mode=MODE_EQUAL)
  • 参数
参数类型是否必填说明
valstr控件value值
modeint匹配模式
默认Selector.MODE_EQUAL:完全相同
Selector.MODE_CONTAINS:包含在其中
  • 返回值

Selector 返回控件查找器,用于链式编程

  • 示例
# 查找name值“等于”Ascript文本的控件
from ascript.ios.node import Selector
node = Selector().value("name").find()

if node:
#找到了控件
print(node)
#打印控件所有属性,较为耗时
print(node.info)
else:
print('没有找到任何控件')
# 查找name值“包含”Ascript文本的控件
from ascript.ios.node import Selector
node = Selector().name("iCloud",Selector.MODE_CONTAINS).find()

if node:
#找到了控件
print(node)
#打印控件所有属性,较为耗时
print(node.info)
else:
print('没有找到任何控件')

类型 type

通过 type 检索控件

  • 函数
Selector().type(value:str,mode=MODE_EQUAL)
  • 参数
参数类型是否必填说明
valuestr控件type值
modeint匹配模式
默认Selector.MODE_EQUAL:完全相同
Selector.MODE_CONTAINS:包含在其中
  • 返回值

Selector 返回控件查找器,用于链式编程

  • 示例
# 查找value值等于Ascript文本的控件
from ascript.ios.node import Selector
node = Selector().type("XCUIElementTypeWindow").find()

if node:
#找到了控件
print(node)
#打印控件所有属性,较为耗时
print(node.info)
else:
print('没有找到任何控件')

是否可访问 enabled

通过 enabled 检索控件

该方法推荐,和其他约束联合调用,否则速度会比较慢

  • 函数
Selector().enabled(value:bool)
  • 参数
参数类型是否必填说明
valueboolTrue:可访问, False:不可访问
  • 返回值

Selector 返回控件查找器,用于链式编程

  • 示例
# 查找value值等于Ascript文本的控件
from ascript.ios.node import Selector
node = Selector().enabled(True).find()

if node:
#找到了控件
print(node)
#打印控件所有属性,较为耗时
print(node.info)
else:
print('没有找到任何控件')

是否显示 visible

通过 visible 检索控件

该方法推荐,和其他约束联合调用,否则速度会比较慢

  • 函数
Selector().visible(value:bool)
  • 参数
参数类型是否必填说明
valueboolTrue:显示在页面的控件, False:没有显示在页面上的控件
  • 返回值

Selector 返回控件查找器,用于链式编程

  • 示例
# 查找value值等于Ascript文本的控件
from ascript.ios.node import Selector
node = Selector().visible(False).find()

if node:
#找到了控件
print(node)
#打印控件所有属性,较为耗时
print(node.info)
else:
print('没有找到任何控件')

是否支持无障碍 accessible

通过 accessible 检索控件

检索该控件 accessible 属性

  • 函数
Selector().accessible(value:bool)
  • 参数
参数类型是否必填说明
accessibleboolTrue:显示在页面的控件, False:没有显示在页面上的控件
  • 返回值

Selector 返回控件查找器,用于链式编程

  • 示例
# 查找accessible值为False的控件
from ascript.ios.node import Selector
node = Selector().accessible(False).find()

if node:
#找到了控件
print(node)
#打印控件所有属性,较为耗时
print(node.info)
else:
print('没有找到任何控件')

绘制排序 index

通过 index 检索控件,当前层级的第几个控件

该方法推荐,和其他约束联合调用,否则速度会比较慢

  • 函数
Selector().index(value:int)
  • 参数
参数类型是否必填说明
valueint要获取当前层级的第几个控件
  • 返回值

Selector 返回控件查找器,用于链式编程

  • 示例
# 查找 绘制排序层级为3的控件
from ascript.ios.node import Selector
node = Selector().index(3).find()

if node:
#找到了控件
print(node)
#打印控件所有属性,较为耗时
print(node.info)
else:
print('没有找到任何控件')

坐标 x

约束 控件 x属性.

这里的控件属性是经过缩放的值.并非真实值

  • 函数
Selector().x(value:int)
  • 参数
参数类型是否必填说明
valueintx坐标的值
  • 返回值

Selector 返回控件查找器,用于链式编程

  • 示例
# 查找 坐标x属性为301的控件
from ascript.ios.node import Selector
node = Selector().x(301).find()

if node:
#找到了控件
print(node)
#打印控件所有属性,较为耗时
print(node.info)
else:
print('没有找到任何控件')

坐标 x

约束 控件 x属性.

这里的控件属性是经过缩放的值.并非真实值

  • 函数
Selector().x(value:int)
  • 参数
参数类型是否必填说明
valueintx坐标的值
modeint默认 0:完全匹配. 1:包含,3:大于,4:小于
  • 返回值

Selector 返回控件查找器,用于链式编程

  • 示例
# 查找 坐标x属性为301的控件
from ascript.ios.node import Selector
node = Selector().x(301).find()

if node:
#找到了控件
print(node)
#打印控件所有属性,较为耗时
print(node.info)
else:
print('没有找到任何控件')

坐标 y

约束 控件 y属性.

这里的控件属性是经过缩放的值.并非真实值

  • 函数
Selector().x(value:int)
  • 参数
参数类型是否必填说明
valueinty坐标的值
modeint默认 0:完全匹配. 1:包含,3:大于,4:小于
  • 返回值

Selector 返回控件查找器,用于链式编程

  • 示例
# 查找 坐标y属性为260的控件
from ascript.ios.node import Selector
node = Selector().y(260).find()

if node:
#找到了控件
print(node)
#打印控件所有属性,较为耗时
print(node.info)
else:
print('没有找到任何控件')

宽度 width

约束控件width属性.

这里的控件属性是经过缩放的值.并非真实值

  • 函数
Selector().width(value:int)
  • 参数
参数类型是否必填说明
valueint控件的宽度值
modeint默认 0:完全匹配. 1:包含,3:大于,4:小于
  • 返回值

Selector 返回控件查找器,用于链式编程

  • 示例
# 查找 宽度width属性为260的控件
from ascript.ios.node import Selector
node = Selector().width(260).find()

if node:
#找到了控件
print(node)
#打印控件所有属性,较为耗时
print(node.info)
else:
print('没有找到任何控件')

高度 height

约束控件height属性.

这里的控件属性是经过缩放的值.并非真实值

  • 函数
Selector().height(value:int)
  • 参数
参数类型是否必填说明
valueint控件的高度值
modeint默认 0:完全匹配. 1:包含,3:大于,4:小于
  • 返回值

Selector 返回控件查找器,用于链式编程

  • 示例
# 查找 高度height属性为260的控件
from ascript.ios.node import Selector
node = Selector().height(260).find()

if node:
#找到了控件
print(node)
#打印控件所有属性,较为耗时
print(node.info)
else:
print('没有找到任何控件')

关系检索

子元素 child

获取当前元素的 子元素

  • 函数
Selector().child(value:float = 0)
  • 参数
参数类型是否必填说明
valuefloat默认0:获取所有子元素. 1:获取第一个孩子,-1:获取倒数第二个孩子. 可填写2,3,4等数字
  • 返回值

Selector 返回控件查找器,用于链式编程

  • 示例
# 获取类型为 XCUIElementTypeOther 的所有孩子
from ascript.ios.node import Selector
nodes = Selector().type("XCUIElementTypeOther").child().find()
print(nodes)

父元素 parent

获取当前元素的 父元素

  • 函数
Selector().parent(value:float = 0)
  • 参数
参数类型是否必填说明
valuefloat默认0:获取所有父辈元素. 1:获取爸爸元素,2:获取爷爷元素
  • 返回值

Selector 返回控件查找器,用于链式编程

  • 示例
# 获取类型为 XCUIElementTypeOther 的所有父辈元素
from ascript.ios.node import Selector
nodes = Selector().type("XCUIElementTypeOther").parent().find()
print(nodes)
# 获取类型为 XCUIElementTypeOther 的爸爸元素
from ascript.ios.node import Selector
nodes = Selector().type("XCUIElementTypeOther").parent(1).find()
print(nodes)

兄弟元素 brother

获取当前元素的 兄弟元素

  • 函数
Selector().brother(value:float = 0)
  • 参数
参数类型是否必填说明
valuefloat默认0:默认获取所有兄弟,1:大哥元素,2:二哥元素,-1:老小元素,0.1:最近的哥,-0.1:最近的弟
  • 返回值

Selector 返回控件查找器,用于链式编程

  • 示例
# 获取类型为 XCUIElementTypeOther 的所有兄弟元素
from ascript.ios.node import Selector
nodes = Selector().type("XCUIElementTypeOther").brother().find()
print(nodes)
# 获取类型为 XCUIElementTypeOther 最近的哥哥元素
from ascript.ios.node import Selector
nodes = Selector().type("XCUIElementTypeOther").brother(0.1).find()
print(nodes)
# 获取类型为 XCUIElementTypeOther 兄弟中的老大
from ascript.ios.node import Selector
nodes = Selector().type("XCUIElementTypeOther").brother(1).find()
print(nodes)

动作追加

点击 click

找到元素后,点击该控件

  • 函数
Selector().?().click(value:int = 0)
  • 参数
参数类型是否必填说明
valuefloat默认0:无障碍点击,1:坐标点击
  • 返回值

Selector 返回控件查找器,用于链式编程

  • 示例
# 获取类型为 XCUIElementTypeOther 的控件,并点击它
from ascript.ios.node import Selector
nodes = Selector().type("XCUIElementTypeOther").click().find()
print(nodes)

滑动 scroll

找到可滑动的控件,执行滑动操作

  • 函数
Selector().?().scroll(mode=MODE_SCROLL_VISIBLE, distance: float = 1.0)
  • 参数
参数类型是否必填说明
modefloat滑动模式 默认"visible":滑动到显示为止,"left":左滑动,"right":右滑动,"up":上滑动,"down":下滑动
distancefloat滑动屏数,默认1.0:1屏
  • 返回值

Selector 返回控件查找器,用于链式编程

  • 示例
# 获取类型为 XCUIElementTypeOther 的控件,并向左滑动
from ascript.ios.node import Selector
nodes = Selector().type("XCUIElementTypeOther").scroll("left").find()
print(nodes)

输入 input

找到可输入的控件,执行输入指令操作

  • 函数
Selector().?().input(value)
  • 参数
参数类型是否必填说明
valuefloat要输入的文字
  • 返回值

Selector 返回控件查找器,用于链式编程

  • 示例
# 获取类型为 XCUIElementTypeTextField 的控件,并向其中追加文字
from ascript.ios.node import Selector
node = Selector().type("XCUIElementTypeTextField").input("自在老师").find()
print(node)
# 清空文字
from ascript.ios.node import Selector
node = Selector().type("XCUIElementTypeTextField").input("").find()
print(node)