Skip to main content

网页控件查找器

我们可以通过此查找器,查询网页中的任意控件.

方法

创建查找器

创建一个WebSelector

  • 函数
WebSelector(web_window:WebWindow)
  • 参数
参数类型是否必填说明
web_windowfrom ascript.android.ui import WebWindow一个web窗口
  • 示例
# 创建一个 网页控件检索器

# 导包
from ascript.android.node import WebSelector
from ascript.android.ui import WebWindow

window = WebWindow("http://www.ascript.cn")
webselector = WebSelector(window)

查找一个控件

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

  • 函数
#class
WebSelector(web_window:WebWindow).find()
  • 返回值

WebNode 网页控件对象


  • 示例
#案例:查找出符合条件的第一个控件
from ascript.android.node import WebSelector
from ascript.android.ui import WebWindow

window = WebWindow("http://www.ascript.cn")
node = WebSelector(window).find()

if node:
#找到了控件
print(node)
else:
print('没有找到任何控件')

查找全部控件

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

  • 函数
#class
WebSelector(web_window:WebWindow).find_all(num:int=999999)
  • 参数
参数类型是否必填说明
numint控件结果最大数量 默认:满足条件的所有
  • 返回值

WebNode[] 网页控件对象列表

  • 示例
#案例:查找出所有符合条件的控件
from ascript.android.node import WebSelector
from ascript.android.ui import WebWindow

window = WebWindow("http://www.baidu.com")
nodes = WebSelector(window).find_all()

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

约束

标签约束

通过 tag 约束, 控件的标签名如:div, a, span, p, ui, li, table 等都是.

  • 函数
WebSelector(web_window:WebWindow).tag(val:str)
  • 参数
参数类型是否必填说明
valstr或js正则控件的标签,如 div,a,span 等.
  • 返回值

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

  • 示例
# 找出 所有标签是div的控件
# 导包
from ascript.android.node import WebSelector
from ascript.android.ui import WebWindow

window = WebWindow("http://www.baidu.cn")
nodes = WebSelector(window).tag("div").find_all()

if nodes and len(nodes)>1:
#找到了控件
print(node)
else:
print('没有找到任何控件')

文本约束

通过 text 约束

  • 函数
WebSelector(web_window:WebWindow).text(val:str)
  • 参数
参数类型是否必填说明
valstr或js正则控件内的文本,支持正则表达式,通常用控件查找器获取
  • 返回值

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

  • 示例
# 找出文本相同的控件
# 导包
from ascript.android.node import WebSelector
from ascript.android.ui import WebWindow

window = WebWindow("http://www.baidu.cn")
node = WebSelector(window).text("百度一下").find()

if node:
#找到了控件
print(node)
else:
print('没有找到任何控件')
# 匹配出控件内文本 符合 指定正则表达式的控件
# 导包
from ascript.android.node import WebSelector
from ascript.android.ui import WebWindow
window = WebWindow("http://www.baidu.cn")
node = WebSelector(window).text("/百度/").find()

if node:
#找到了控件
print(node)
else:
print('没有找到任何控件')

值约束

通过 value 约束, 如 input ,radio,select 的结果值都属于value值

  • 函数
WebSelector(web_window:WebWindow).value(val:str)
  • 参数
参数类型是否必填说明
valstr或js正则控件内的value值,支持正则表达式,通常用控件查找器获取
  • 返回值

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

  • 示例
# 找出值为 某个文本的 控件
# 导包
from ascript.android.node import WebSelector
from ascript.android.ui import WebWindow

window = WebWindow("http://www.ascript.cn")
node = WebSelector(window).value("请输入搜索值").find()

if node:
#找到了控件
print(node)
else:
print('没有找到任何控件')

属性约束

通过 attr 约束, 一个标签的属性都通过attr约束,如 a标签的 href,class,id 等

  • 函数
WebSelector(web_window:WebWindow).attr(key: str, val: str)
  • 参数
参数类型是否必填说明
keystr控件的属性名
valstr或js正则控件的属性值,支持正则表达式,通常用控件查找器获取
  • 返回值

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

  • 示例
# 找出值为 某个文本的 控件
# 导包

from ascript.android.node import WebSelector
from ascript.android.ui import WebWindow

window = WebWindow("http://www.ascript.com")
node = WebSelector(window).value("请输入账号").find()

if node:
#找到了控件
print(node)
else:
print('没有找到任何控件')

关系约束

获取孩子元素

通过 child 获取孩子元素

  • 函数
WebSelector(web_window:WebWindow).child(*val: int)
  • 参数
参数类型是否必填说明
*val*int 可变int值获取第val个子控件
默认获取所有孩子控件
(1):获取第1个孩子控件
(-1):获取倒数第1个孩子
(1,3):获取第1个和第3个子控件
  • 返回值

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

  • 示例
# 案例1: 获取所有孩子

# 导包
from ascript.android.node import WebSelector
from ascript.android.ui import WebWindow

window = WebWindow("http://www.ascript.com")
# 约束 默认无参下,获取所有
nodes = WebSelector(window).text("百度一下").child().find_all()

if nodes:
#找到了控件
for node in nodes:
print(node.type)
else:
print('没有找到任何控件')
# 案例2: 获取第一个孩子

# 导包
from ascript.android.node import WebSelector
from ascript.android.ui import WebWindow

window = WebWindow("http://www.ascript.com")
# 约束 获取第一个孩子
nodes = WebSelector(window).text("百度一下").child(1).find_all();

if nodes:
#找到了控件
for node in nodes:
print(node.type)
else:
print('没有找到任何控件')
# 案例3: 获取第1和 第2个孩子

# 导包
from ascript.android.node import WebSelector
from ascript.android.ui import WebWindow

window = WebWindow("http://www.ascript.com")
# 约束 可变参数,填写多个
nodes = WebSelector(window).text("ascript").child(1,2).find_all()

if nodes:
#找到了控件
for node in nodes:
print(node.type)
else:
print('没有找到任何控件')
# 案例4: 获取第倒数第一个孩子

# 导包
from ascript.android.node import WebSelector
from ascript.android.ui import WebWindow

window = WebWindow("http://www.ascript.com")
# 约束 负数,倒数取值
nodes = WebSelector(window).text("ascript").child(-1).find_all()

if nodes:
#找到了控件
for node in nodes:
print(node.type)
else:
print('没有找到任何控件')

获取兄弟元素

通过 brother 获取孩子元素

  • 函数
WebSelector(web_window:WebWindow).brother(*val: int)
  • 参数
参数类型是否必填说明
*val*int 可变int值获取第val个子控件
默认获取所有兄弟控件
(1):获取第1个兄弟控件
(1,2):获取第1和第2个兄弟控件
(0.1):获取当前控件的下一个兄弟控件
(-0.1):获取当前控件的上一个兄弟控件
(-1):获取倒数第1个兄弟控件
  • 返回值

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

  • 示例
# 案例1: 获取所有兄弟
# 导包
from ascript.android.node import WebSelector
from ascript.android.ui import WebWindow

window = WebWindow("http://www.ascript.com")
nodes = WebSelector(window).text("/ascript/").brother().find_all();

if nodes:
#找到了控件
for node in nodes:
print(node.desc)
else:
print('没有找到任何控件')
# 案例2: 获取第一个兄弟控件 
# 导包
from ascript.android.node import WebSelector
from ascript.android.ui import WebWindow

window = WebWindow("http://www.ascript.com")
nodes = WebSelector(window).text("/ascript/").brother(1).find_all();

if nodes:
#找到了控件
for node in nodes:
print(node.desc)
else:
print('没有找到任何控件')
# 案例3: 获取第1和第2个兄弟控件
# 导包
from ascript.android.node import WebSelector
from ascript.android.ui import WebWindow

window = WebWindow("http://www.ascript.com")
nodes = WebSelector(window).text("ascript").brother(1,2).find_all();

if nodes:
#找到了控件
for node in nodes:
print(node.desc)
else:
print('没有找到任何控件')
# 案例4:获取当前控件的下一个兄弟控件
# 导包
from ascript.android.node import WebSelector
from ascript.android.ui import WebWindow

window = WebWindow("http://www.ascript.com")
nodes = WebSelector(window).text("ascript").brother(0.1).find_all();

if nodes:
#找到了控件
for node in nodes:
print(node.desc)
else:
print('没有找到任何控件')
# 案例5:获取当前控件的上一个兄弟控件
# 导包
from ascript.android.node import WebSelector
from ascript.android.ui import WebWindow

window = WebWindow("http://www.ascript.com")
nodes = WebSelector(window).text("ascript").brother(-0.1).find_all();

if nodes:
#找到了控件
for node in nodes:
print(node.desc)
else:
print('没有找到任何控件')
# 案例6:获取倒数第1个兄弟控件
# 导包
from ascript.android.node import WebSelector
from ascript.android.ui import WebWindow

window = WebWindow("http://www.ascript.com")
nodes = WebSelector(window).text("ascript").brother(-1).find_all()

if nodes:
#找到了控件
for node in nodes:
print(node.desc)
else:
print('没有找到任何控件')

获取父元素

通过 parent 获取父元素

  • 函数
WebSelector(web_window:WebWindow).parent(*val: int)
  • 参数
参数类型是否必填说明
*parent*int 可变int值获取第val个父控件
默认获取所有父元素
(2):获取爷爷元素
(3):获取太爷爷元素
(1,3):获取第1和第3个父元素
  • 返回值

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

  • 示例
# 案例1: 获取指定 id控件的 所有父元素(父元素,爷爷元素,太爷爷,祖太爷...统统获取)

# 导包
from ascript.android.node import WebSelector
from ascript.android.ui import WebWindow

window = WebWindow("http://www.ascript.com")
nodes = WebSelector(window).text("ascript").parent().find_all()

if nodes:
#找到了控件
for node in nodes:
print(node)
else:
print('没有找到任何控件')
# 案例2: 获取指定 id控件的 太爷爷元素

# 导包
from ascript.android.node import WebSelector
from ascript.android.ui import WebWindow

window = WebWindow("http://www.ascript.com")
nodes = WebSelector(window).text("ascript").parent(3).find_all();

if nodes:
#找到了控件
for node in nodes:
print(node)
else:
print('没有找到任何控件')
# 案例3: 获取父元素,太太爷元素

# 导包
from ascript.android.node import WebSelector
from ascript.android.ui import WebWindow

window = WebWindow("http://www.ascript.com")
nodes = WebSelector(window).text("ascript").parent(1,3).find_all()

if nodes:
#找到了控件
for node in nodes:
print(node)
else:
print('没有找到任何控件')

动作约束

点击

通过 click 执行点击操作

  • 函数
WebSelector(web_window:WebWindow).click()
  • 参数 无

  • 返回值

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

  • 示例
# 案例1: 找到某个元素后执行点击操作

# 导包
from ascript.android.node import WebSelector
from ascript.android.ui import WebWindow

window = WebWindow("http://www.ascript.com")
node = WebSelector(window).text("ascript").click().find()

if node:
#找到了控件
print(node)
else:
print('没有找到任何控件')

长按

通过 long_click 执行长按操作

  • 函数
WebSelector(web_window:WebWindow).long_click()
  • 参数 无

  • 返回值

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

  • 示例
# 案例1: 找到某个元素后执行长按操作

# 导包
from ascript.android.node import WebSelector
from ascript.android.ui import WebWindow

window = WebWindow("http://www.ascript.com")
node = WebSelector(window).text("ascript").long_click().find()

if node:
#找到了控件
print(node)
else:
print('没有找到任何控件')

输入文本

通过 input 执行输入操作,该方法仅对input类控件生效

  • 函数
WebSelector(web_window:WebWindow).input(val:str)
  • 参数
参数类型是否必填说明
inputstr文本信息
  • 返回值

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

  • 示例
# 案例1: 找到某个元素后执行点击操作

# 导包
from ascript.android.node import WebSelector
from ascript.android.ui import WebWindow

window = WebWindow("http://www.ascript.com")
node = WebSelector(window).text("ascript").input("123").find()

if node:
#找到了控件
print(node)
else:
print('没有找到任何控件')