51Testing软件测试论坛
标题:
silktest执行ExecScript出错
[打印本页]
作者:
QA_BAY
时间:
2008-6-13 11:56
标题:
silktest执行ExecScript出错
本人想取HtmlTable 中数据,但GetRowText 与GetRowCount都失效,取不出数据,打算用DOM取值
HTMLTABLE原码:
[ ] <TABLE id=DataTable_ListView ondblclick="TableRowSet_OnDbClick('ListView');" style="TABLE-LAYOUT: fixed; BORDER-COLLAPSE: collapse" onfocusout="TableRowSet_OnFocusOut('ListView');" onclick="TableRowSet_OnClick('ListView');" borderColor=#000000 width=1500 bgColor=#fafcff border=1 DBGridPK="ListView" name="DataTable_ListView" pageCount="1" currPage="1">
[ ] <TBODY class=G-TableBody>
[ ] <TR class=GD-Two height=20 I="" M_STRIMAGEINDEX_DISPLAY="0" M_STRIMAGEINDEX="0">
[ ] <TD class=GD-TD width=100>50050</TD>
[ ] <TD class=GD-TD width=100>测试信用社</TD>
[ ] <TD class=GD-TD width=100 I="10">[10]信用社 </TD>
[ ] <TD class=GD-TD width=100>3333333333</TD>
[ ] <TD class=GD-TD width=100>1234</TD></TR></TBODY></TABLE>
在脚本中定义一个JS脚本放到LIST中,如下:
[-] LIST OF STRING lsLines = {...}
[ ] " function test() "{"
[ ] " table = document.getElementById('DataTable_ListView');"
[ ] " trs = table.getElementsByTagName('tr');"
[ ] " result = "";"
[ ] "for(var i=0; i<trs.length; i++)"
[ ] ""{"
[ ] " tds = trs
.getElementsByTagName('td');"
[ ] "for(var j=0; j<tds.length; j++)"
[ ] ""{"
[ ] "result += tds[j].innerText + ';' ;"
[ ] "};"
[ ] "};"
[ ] "return result;"
[ ] "};"
[ ]
信息系统维护3.SetActive()
string bb=信息系统维护3.ExecScript(lsLines) --在这一步就报错了!
Print (信息系统维护3.ExecFunction("test"))
执行报错,
[-] Testcase 税局信息系统维护_01 - 1 error
[ ] *** Error: DLL cannot be loaded -- Error 126
[ ] Occurred in ai_CaptureScreen
[ ] Called from LogCase at ai_fun.inc(617)
从调试过程来看,JS写错了,但不知道在silktest对js脚本的要求是怎么样的,哪位高手帮忙看看是哪里的问题
作者:
QA_BAY
时间:
2008-6-16 10:59
自己坐沙发!
谁能回答一下!相信应该大家有调用过吧!
作者:
QA_BAY
时间:
2008-6-16 11:14
但直接写个JS脚本放到HTML中,运行很快,而且正常取所有值!
<script type="text/javascript">
function test(){
var table = document.getElementById("DataTable_ListView");
var trs = table.getElementsByTagName("tr");
var result = "";
for(var i=0; i<trs.length; i++){
var tds = trs
.getElementsByTagName("td");
for(var j=0; j<tds.length; j++){
result += tds[j].innerText + ';';
}
}
alert(result);
}
</script>
作者:
water0661
时间:
2008-6-17 10:57
[ ] " result = "";"
尝试改成这个看行不行: "result= '';"
作者:
QA_BAY
时间:
2008-6-17 15:21
自己再把脚本修改了一下;
[-] LIST OF STRING lsLines = {...}
[ ] " function test() "{"
[ ] " table = document.getElementById('DataTable_ListView');"
[ ] " trs = table.getElementsByTagName('TR');"
[ ] "return trs.length;"
[ ] "};"
信息系统维护3.ExecScript(lsLines)
Print (信息系统维护3.ExecFunction("test")) --这步报错,错误跟原来一样;
[ ] *** Error: DLL cannot be loaded -- Error 126
[ ] Occurred in ai_CaptureScreen
但换成这个就不报错;
[ ] sCount=信息系统维护3.数据列表.DataTable_ListView.ExecMethod("document.getElementById ('DataTable_ListView').getElementsByTagName('TR').length")
[ ] print(sCount)
执行正确!
不知道用ExecScript,错误在哪里!
作者:
QA_BAY
时间:
2008-6-17 15:47
ExecScript 会不会不支持 document,silktest会区分document吗?
但在网页里面是不区分的
作者:
water0661
时间:
2008-6-18 16:00
document 是javascript里面的,应该与ST无关的。lz的脚本我这边执行可以pass。不过我的frame跟你肯定是不一样的。
改成这样试试:
[ ] sCount=信息系统维护3.数据列表.DataTable_ListView.ExecScript(lsLines)
作者:
QA_BAY
时间:
2008-6-18 16:47
不行,信息系统维护3.数据列表.DataTable_ListView 下没有ExecScript函数选,硬给他一个ExecScript,编译出错。
在数据列表这一级也没有ExecScript可以选择;
作者:
water0661
时间:
2008-6-20 16:22
如果可以的话,lz可以把你的脚本整理出个最简单的发给我,我在我这边调试看看,也有可能是ST配置的问题。邮箱:
water0661@tom.com
作者:
QA_BAY
时间:
2008-7-16 15:43
此问题已经解决,GetRowText 与GetRowCount都失效是由于GUI没有修改正确,列表框包含表中表,所以没有正确取出到第二个表的数据,现在修改GUI之后,GetRowText 与GetRowCount都可以正确取值,不用JAVAScript调用,速度快很多!
作者:
tracy-fmsi
时间:
2008-11-4 13:59
楼主能不能详细解释一下怎么修改GUI的呢?
我是新手,向楼主学习,谢谢
欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/)
Powered by Discuz! X3.2