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