所以我长期以来一直在寻找这个问题的答案,并提出了一个临时的解决方案,我将在下面写,但我想知道是否更优雅?
在我正在进行的应用程序中,有一个weblist,它可以包含四个值中的一个:10,25,50,100。选择值后,下面的网表应显示10,25,50或100个结果,具体取决于当然选择的值。
现在,当我调用标准Obj.Select“100”时,它将列表框更改为100,但没有其他任何事情发生。不会触发任何事件,因此下面的Web表保持不变。如果我手动选择100 web表更新以显示100条记录。
我尝试向网络列表触发不同的事件,但似乎没有任何事件更新网页表格!
最后我决定采用以下解决方案:
Public Function CustomSelect(obj, strValue)
Dim intCounter, strProperty, boolItemInList, strEnabledOrDisabled, arrAllItems, strAllItems
Dim xCoord, yCoord
If strValue = "@@" Then
Call AddComment("Passed in @@, skipping set function")
Exit Function
End If
Reporter.Filter = rfEnableErrorsOnly
strProperty= obj.GetTOProperty("name")
If strProperty= "" Then
strProperty= obj.GetTOProperty("html id")
End If
Reporter.Filter = rfEnableAll
If obj.exist(5) Then
XCoord = obj.GetROProperty("abs_x")
YCoord = obj.GetROProperty("abs_y")
strEnabledOrDisabled = obj.GetROProperty("disabled")
If strEnabledOrDisabled = 0 Or strEnabledOrDisabled = "0" Then
strAllItems = obj.GetROProperty("all items")
arrAllItems = split(strAllItems,";")
For intCounter = LBound(arrAllItems) to Ubound(arrAllItems)
'Obj.SendKeys "{DOWN}"
Obj.Select "#" & intCounter
If arrAllItems(intCounter) = strValue Then
Exit For
End If
Next
Else
Call ReportExpectedVsActual("Weblist is disabled: " & strProperty, False, True)
End If
Else
Call ReportExpectedVsActual("Weblist doesnt exist: " & strProperty, True, False)
End If
End Function
RegisterUserFunc "WebList", "CustomSelect", "CustomSelect"
我知道它看起来有点乱,但我能想到的就是让它在当下工作。有没有人对尝试什么有任何其他想法?
干杯
尼克
答案 0 :(得分:1)
至少要尝试两件事:
尝试查看网页的来源,了解如何触发操作。它可能类似于onchange='RefreshIt();'
,或者您会看到EventHandler
附加到它上面,然后您需要深入挖掘。
如果您已识别将更新页面的事件,请在使用WebListObject.FireEvent {yourEvent}
更新列表后尝试触发该事件。 yourEvent
可以是包含onchange,onclick,ondblclick,onblur,onfocus,onmousedown,onmouseup,onmouseover,onmouseout,onsubmit,onreset或onpropertychange的字符串。
另一种更简单(但让你减少控制)的方法值得一试。这可以通过以下设置完成:转到Tools > Options
,然后在树状视图中选择Web > Advanced
。尝试更改Run only click
的复选框和Replay type
的单选按钮时会发生什么。