求教: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逐一删除呢? 获取listbox的length属性用SQAGetPropety这个函数试试 我尝试了通过SQAGetproperty()获得listbox的length属性。也成功获得。但是问题似乎不在这里。因为我试了
ListBox Click, "Type=ListBox;Name=rule_name", "index=1“这样的操作都无法进行。运行日志给出的结果是can't perform the action。我不知道对listbox的动作为什么不能通过index=1来完成呢?
请指教。 把你全部的代码列出来看看 下面是这一部分的代码,在(***)这一行出现错误,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 你的循环语句呢?? 不好意思,忘了改了。把上面的if语句改称while,后面的endif改称wend就好了。但是listbox的那个问题好像没解决 "index=1",你就只能删掉这个item啊,试着把改成“index=”&i(dim i as integer)
然后试着用inspector这个工具抓捕到你要删的第一个item的index等于多少,把这个值复给i,再在inspector里找出每个item的index相差多少,加上语句i=i+.. 加号后面是那个index相差的数值 谢谢你的建议。我之所以只用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“
但是脚本运行到此就会出错。因此我认为不应该是循环的问题。而只是这一个语句的问题。
这个困难很棘手。期待帮助。 我想了想,你那个item不可能在前台删的吧?应该是后台吧,如果是后台的话就不会出现每删一个下面的item上移的情况了呀,后台的话所有的item组成一个列表,然后从列表里删除item,试着获取每个item的table值然后再找规律,试试看吧,祝你成功!! 问题还没解决。
下面再把我的问题纯粹化一点。我想通过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标示方式来选择各个条目。有什么方法呢? 看不到具体的列子我实在是不知道怎么帮你,恕我愚昧,不好意思! listbox中,不能通过index属性定位的!
就和datagrid中不能通过row和column一样!
页:
[1]