google搜索 51Testing站内搜索                    软件测试门户 | 软件测试培 训 | 文章资料精选 | 软件测试论坛 | 软件测试博客 | 测试招聘求职 
打印

silktest执行ExecScript出错

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脚本的要求是怎么样的,哪位高手帮忙看看是哪里的问题
http://blog.163.com/baytiboy     自己的空间自己作主!
Those who know don't speak;those who speak don't know.

TOP

自己坐沙发!
谁能回答一下!相信应该大家有调用过吧!
http://blog.163.com/baytiboy     自己的空间自己作主!
Those who know don't speak;those who speak don't know.

TOP

但直接写个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>
http://blog.163.com/baytiboy     自己的空间自己作主!
Those who know don't speak;those who speak don't know.

TOP

[ ] " result = "";"
尝试改成这个看行不行: "result= '';"

TOP

自己再把脚本修改了一下;

                [-] 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,错误在哪里!
http://blog.163.com/baytiboy     自己的空间自己作主!
Those who know don't speak;those who speak don't know.

TOP

ExecScript 会不会不支持 document,silktest会区分document吗?
但在网页里面是不区分的
http://blog.163.com/baytiboy     自己的空间自己作主!
Those who know don't speak;those who speak don't know.

TOP

document 是javascript里面的,应该与ST无关的。lz的脚本我这边执行可以pass。不过我的frame跟你肯定是不一样的。
改成这样试试:
  [ ] sCount=信息系统维护3.数据列表.DataTable_ListView.ExecScript(lsLines)

TOP

不行,信息系统维护3.数据列表.DataTable_ListView    下没有ExecScript函数选,硬给他一个ExecScript,编译出错。
在数据列表这一级也没有ExecScript可以选择;
http://blog.163.com/baytiboy     自己的空间自己作主!
Those who know don't speak;those who speak don't know.

TOP

如果可以的话,lz可以把你的脚本整理出个最简单的发给我,我在我这边调试看看,也有可能是ST配置的问题。邮箱:water0661@tom.com

TOP

此问题已经解决,GetRowText 与GetRowCount都失效是由于GUI没有修改正确,列表框包含表中表,所以没有正确取出到第二个表的数据,现在修改GUI之后,GetRowText 与GetRowCount都可以正确取值,不用JAVAScript调用,速度快很多!
http://blog.163.com/baytiboy     自己的空间自己作主!
Those who know don't speak;those who speak don't know.

TOP

 
当前时区 GMT+8, 现在时间是 2008-10-13 10:35Copyright(C)上海博为峰软件技术有限公司 2001-2007 电话:021-64471599-8017
当您在访问网站、论坛及博客过程中遇到问题时可发送email:webmaster@51testing.com或发送论坛短信至管理员风在吹