zhoud 发表于 2005-7-4 17:29:13

求教:listbox中循环删除各个item遇到困难

求教:
我在执行完一些操作后需要做清理操作。就是把添加了的规则从listbox中逐一删除。我尝试的方法是获取listbox的length属性,然后通过index循环选中各个item ,执行删除操作。如下

Window SetContext, "WindowTag=WEBBrowser", ""
Browser SetFrame,"Type=HTMLFrame;HTMLId=admin_main",""
    Browser NewPage,"HTMLTitle=无标题文档",""
    ListBox Click, "Type=ListBox;Name=rule_name", "index=i"(**)
    Browser NewPage,"HTMLTitle=无标题文档",""
    PushButton Click, "Type=PushButton;Name=Submit_delete"

上面的代码在执行到(**)行的时候就出现了错误。我查了,listbox中是可以通过index来标示各个item的。不知道为什么这里不行。所以想请教一下,这个地方是不能用index来标示各个item吗?那怎么将listbox中的各个item逐一删除呢?

gabriel 发表于 2005-7-5 08:39:02

获取listbox的length属性用SQAGetPropety这个函数试试

zhoud 发表于 2005-7-5 09:21:47

我尝试了通过SQAGetproperty()获得listbox的length属性。也成功获得。但是问题似乎不在这里。因为我试了
ListBox Click, "Type=ListBox;Name=rule_name", "index=1“这样的操作都无法进行。运行日志给出的结果是can't perform the action。我不知道对listbox的动作为什么不能通过index=1来完成呢?
请指教。

gabriel 发表于 2005-7-5 11:02:22

把你全部的代码列出来看看

zhoud 发表于 2005-7-5 11:25:23

下面是这一部分的代码,在(***)这一行出现错误,can't perform the action.
请指教。

Browser SetFrame,"Type=HTMLFrame;HTMLId=admin_main",""
   
    Window SetTestContext, "WindowTag=WEBBrowser", ""
    Browser SetFrame,"Type=HTMLFrame;HTMLId=admin_main",""
    'Browser NewPage,"HTMLTitle=无标题文档",""   
   
    Window SetTestContext, "WindowTag=WEBBrowser", ""
    Browser SetFrame,"Type=HTMLFrame;HTMLId=admin_main",""   
    result=sqagetproperty("Type=HTMLFrame;Name=admin_main;\;Type=ListBox;Name=rule_name","length",rulenum)
    sqaconsolewrite str$(result)
    sqaconsolewrite str$(rulenum)
    if rulenum<>0 then
    Window SetContext, "WindowTag=WEBBrowser", ""
    Browser SetFrame,"Type=HTMLFrame;HTMLId=admin_main",""

    ListBox click, "Type=ListBox;Name=rule_name", "Index=1"(***)
   
    PushButton Click, "Type=PushButton;Name=Submit_delete"
   
    Window SetContext, "Caption=Microsoft Internet Explorer", ""
    PushButton Click, "Text=确定"
   
    Window SetContext, "WindowTag=WEBBrowser", ""
    Browser SetFrame,"Type=HTMLFrame;HTMLId=admin_main",""
    Browser NewPage,"HTMLTitle=操作成功",""
    HTMLLink Click, "Type=HTMLLink;HTMLText=返回", ""

Window SetTestContext, "WindowTag=WEBBrowser", ""
    Browser SetFrame,"Type=HTMLFrame;HTMLId=admin_main",""   
    result=sqagetproperty("Type=HTMLFrame;Name=admin_main;\;Type=ListBox;Name=rule_name","length",rulenum)
end if

gabriel 发表于 2005-7-5 11:49:07

你的循环语句呢??

zhoud 发表于 2005-7-5 14:23:27

不好意思,忘了改了。把上面的if语句改称while,后面的endif改称wend就好了。但是listbox的那个问题好像没解决

gabriel 发表于 2005-7-5 15:21:58

"index=1",你就只能删掉这个item啊,试着把改成“index=”&i(dim i as integer)
然后试着用inspector这个工具抓捕到你要删的第一个item的index等于多少,把这个值复给i,再在inspector里找出每个item的index相差多少,加上语句i=i+.. 加号后面是那个index相差的数值

zhoud 发表于 2005-7-5 18:54:13

谢谢你的建议。我之所以只用index=1,是因为每次删除一个之后,下面的item上移,所有其他的item的Index都会改变。因此每次都删除第一个就可以了。
但是这不是问题的所在。假如说我们不是循环删除,而只是删除Index=1的那一个Item。录制脚本的结果是
ListBox click, "Type=ListBox;Name=rule_name", "Text=group“
为了使得在这个Item的Text属性变化的情况下仍可以找到并删除,我尝试使用Index来识别这个item。将语句改成如下的语句:
ListBox click, "Type=ListBox;Name=rule_name", "Index=1“
但是脚本运行到此就会出错。因此我认为不应该是循环的问题。而只是这一个语句的问题。
这个困难很棘手。期待帮助。

gabriel 发表于 2005-7-6 09:00:16

我想了想,你那个item不可能在前台删的吧?应该是后台吧,如果是后台的话就不会出现每删一个下面的item上移的情况了呀,后台的话所有的item组成一个列表,然后从列表里删除item,试着获取每个item的table值然后再找规律,试试看吧,祝你成功!!

zhoud 发表于 2005-7-8 09:43:35

问题还没解决。
下面再把我的问题纯粹化一点。我想通过index标示listbox的各个条目,点击不同的条目,而不是通过text。因此我对录制的脚本修改了。

录制脚本的结果是
ListBox click, "Type=ListBox;Name=rule_name", "Text=group“
为了使得在这个Item的Text属性变化的情况下仍可以找到并删除,我尝试使用Index来识别这个item。将语句改成如下的语句:
ListBox click, "Type=ListBox;Name=rule_name", "Index=1“

但是只是这样一个点击动作也不可实现。我希望避开text标示方式来选择各个条目。有什么方法呢?

gabriel 发表于 2005-7-11 19:26:22

看不到具体的列子我实在是不知道怎么帮你,恕我愚昧,不好意思!

ilovejolly 发表于 2005-9-2 21:21:58

listbox中,不能通过index属性定位的!
就和datagrid中不能通过row和column一样!
页: [1]
查看完整版本: 求教:listbox中循环删除各个item遇到困难