wb.getEle()

  • ele = wb.getEle( HTML节点的ID名name, 框架名 )
  • 参数是ID或者name属性,返回一个节点对象或框架内子节点对象。

该函数查找并返回页面上的element节点对象,
该对象同样是一个com对象,可以使用com.DumpTypeInfo函数列出该对象的成员.

可以通过第二个参数指定框架窗口,该参数可以省略.  

调用wb.getEle之前必须调用 wb.wait() 等待网页下载完毕.  

而使用 wb.waitEle() 则实现等待该节点下载并返回该节点的功能,而无须等待整个网页下载完.

wb.queryEle

wbLayout.queryEle("div")

var frame = wbLayout.queryEle("iframe");
frame.querySelector("input#kw").value = "测试";

wb.queryEles:

  • 搜索节点对象,该函数返回的是一个数组,\n但可以通过调用数组的成员函数批量调用节点的同名成员函数,支持click函数,\n即使找不到节点,此函数也会返回一个空数组.

  • 返回table对象,长度大于0这代表查找到元素。

  • 必须找到框架才能返回,如果框架有可能不出现,应增加判断或 改用 wb.waitQueryEles()。判断写法:

    if( wb.waitDoc("框架名",超时值) ){
    //出错处理
    }

元素查找写法示例(很多写法可以参考网页探针):

#根据className查找元素
var elTest = wb.queryEles( className = "test" )

#根据parent和tagName查找元素
var elTestGroupId = wb.queryEles( parent = elTest[1]; tagName = "a");

#根据parent和src查找元素
wb.queryEles( parent="pageframe" ; src="bottom.html " )

wb.queryEles( parent="pageframe" ; src="<@@127.0.0.1/web/rcas/adjust.do?action=init&appNO=@>\d+")

#查找指定iframe名称下的元素(jsKcxzIfra为iframe名称)
mainWb.queryEles(parent="jsKcxzIfra";tagName="tbody");

#根据parent/type/innerHTML查找
wb.queryEles( parent = ele;type = "submit";innerHTML = "确定" )

  • parent这个可选键指定容器(在这个容器里查找),可以指定一个ele对象。也可以指定一个框架名称,如果不指定就是指的wb.getDoc()。

示例代码:

import web.form;
/*DSG{{*/
var winform = win.form(parent=...; bottom=451;scroll=1;text="aardio Form";right=681 )
winform.add( )
/*}}*/

//创建web窗体
var wb = web.form( winform )
var html = /**
<html class="yui3-js-enabled">
<body>
<div class="J_ChargePop default" id="yui_3_3_0_1_132368985183320" style="left: 464.5px; top: 92.5px; width: 445px; height: auto;">
<div class="outer">
<div class="inner">
<div class="bd">
<form action="tb_item_id=14609580454&item_name=%B0%D4%CD%F550%D4%AA%D4%DA%CF%DF%D6%B1%B3%E4&unit=50%D4%AA">
<div class="op">
<button type="submit">确定</button> //要取“确定”按钮
</div>
</form>
</div>
</div>
</div>
</div>
</body>
</html>
**/
wb.write( html )
winform.show();

var eleSubmit;
var qEle = wb.queryEles( className = "op" ) //找到父节点
for(i=1;#qEle;1){
var ele = qEle[ i ]
var qEleSubmit = wb.queryEles( parent = ele;type = "submit";innerHTML = "确定" )
if( #qEleSubmit)
eleSubmit = qEleSubmit[1]
}

if(eleSubmit){
io.open()
io.print( eleSubmit.innerHTML );
}

//进入消息循环
win.loopMessage();