51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 4303|回复: 10
打印 上一主题 下一主题

silktest执行ExecScript出错

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2008-6-13 11:56:37 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
本人想取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脚本的要求是怎么样的,哪位高手帮忙看看是哪里的问题
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

11#
发表于 2008-11-4 13:59:24 | 只看该作者
楼主能不能详细解释一下怎么修改GUI的呢?
我是新手,向楼主学习,谢谢
回复 支持 反对

使用道具 举报

该用户从未签到

10#
 楼主| 发表于 2008-7-16 15:43:32 | 只看该作者
此问题已经解决,GetRowText 与GetRowCount都失效是由于GUI没有修改正确,列表框包含表中表,所以没有正确取出到第二个表的数据,现在修改GUI之后,GetRowText 与GetRowCount都可以正确取值,不用JAVAScript调用,速度快很多!
回复 支持 反对

使用道具 举报

该用户从未签到

9#
发表于 2008-6-20 16:22:59 | 只看该作者
如果可以的话,lz可以把你的脚本整理出个最简单的发给我,我在我这边调试看看,也有可能是ST配置的问题。邮箱:water0661@tom.com
回复 支持 反对

使用道具 举报

该用户从未签到

8#
 楼主| 发表于 2008-6-18 16:47:23 | 只看该作者
不行,信息系统维护3.数据列表.DataTable_ListView    下没有ExecScript函数选,硬给他一个ExecScript,编译出错。
在数据列表这一级也没有ExecScript可以选择;
回复 支持 反对

使用道具 举报

该用户从未签到

7#
发表于 2008-6-18 16:00:16 | 只看该作者
document 是javascript里面的,应该与ST无关的。lz的脚本我这边执行可以pass。不过我的frame跟你肯定是不一样的。
改成这样试试:
  [ ] sCount=信息系统维护3.数据列表.DataTable_ListView.ExecScript(lsLines)
回复 支持 反对

使用道具 举报

该用户从未签到

6#
 楼主| 发表于 2008-6-17 15:47:41 | 只看该作者
ExecScript 会不会不支持 document,silktest会区分document吗?
但在网页里面是不区分的
回复 支持 反对

使用道具 举报

该用户从未签到

5#
 楼主| 发表于 2008-6-17 15:21:29 | 只看该作者
自己再把脚本修改了一下;

                [-] 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,错误在哪里!
回复 支持 反对

使用道具 举报

该用户从未签到

4#
发表于 2008-6-17 10:57:37 | 只看该作者
[ ] " result = "";"
尝试改成这个看行不行: "result= '';"
回复 支持 反对

使用道具 举报

该用户从未签到

3#
 楼主| 发表于 2008-6-16 11:14: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>
回复 支持 反对

使用道具 举报

该用户从未签到

2#
 楼主| 发表于 2008-6-16 10:59:12 | 只看该作者
自己坐沙发!
谁能回答一下!相信应该大家有调用过吧!
回复 支持 反对

使用道具 举报

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

GMT+8, 2024-11-8 18:31 , Processed in 0.075628 second(s), 29 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

快速回复 返回顶部 返回列表