网页控件查找器
我们可以通过此查找器,查询网页中的任意控件.
方法
创建查找器
创建一个WebSelector
- 函数
WebSelector(web_window:WebWindow)
- 参数
| 参数 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
| web_window | from 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)
- 参数
| 参数 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
| num | int | 否 | 控件结果最大数量 默认:满足条件的所有 |
- 返回值
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)
- 参数
| 参数 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
| val | str或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)
- 参数
| 参数 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
| val | str或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)
- 参数
| 参数 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
| val | str或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)
- 参数
| 参数 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
| key | str | 是 | 控件的属性名 |
| val | str或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)
- 参数
| 参数 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
| input | str | 是 | 文本信息 |
- 返回值
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('没有找到任何控件')