需要帮助从 HP UFT 的下拉列表中选择项目
Need help selecting an item from a dropdown list in HP UFT
我需要一些帮助来从下拉列表中选择一个值。下拉列表是一个 WebElement,流程在应该选择值的点之前运行良好。
我的代码如下:
.Browser("Browser").Page("PageName").WebElement("DropDownList").Click
.WebList("ListOfItems").Select(itemToSelect)
注意:itemToSelect 是需要从列表中选择的项目的名称,在函数中作为参数传递。
当 运行 代码时,我得到一个未指定的错误。
奇怪的是,在抛出错误之前,我可以在浏览器中看到从列表中选择的值,因为选择它时,表单中的某些字段会发生变化。此外,如果我在错误消息面板中按 "Skip",该过程将继续进行,就好像什么都没发生一样。
我确定错误来自 .WebList("ListOfItems").Select(itemToSelect)
,但我不知道如何修复它。
试试这个 code.It 适合我。
StrAllItems = Split(Browser("name:=.*").Page("title:=.*").WebList("name:=.*").GetRoProperty("all items"),";")
For intCounter = Lbound(strAllItems) to Ubound(strAllItems)-1
If Browser("name:=.*").Page("title:=.*").WebList("name:=.*").GetItem(intCounter)= "SomeValue" Then
Browser("name:=.*").Page("title:=.*").WebList("name:=.*").Select (intCounter)
Exit For
End If
Next
如果有帮助,请告诉我。
如果测试运行正确,而您只是遇到了一个多余的错误,您可以忽略这个特定的错误。当然,最好了解错误的来源,您可能应该联系 MicroFocus 支持,但同时您可以关闭对违规行的错误处理。
Browser("Browser").Page("PageName").WebElement("DropDownList").Click
On Error Resume Next ' turn off error handling
Browser("Browser").Page("PageName").WebList("ListOfItems").Select(itemToSelect)
On Error Goto 0 ' turn error handling back on
顺便说一句,我稍微更改了您的代码以使其有效,我认为这就是您的代码的真实样子。
可能的时间问题:您可能需要等待孔列表出现,然后再 select 项目。
通常,项目存在,但应用仍在更新其 GUI。
每当您在应用程序未空闲时使用 UFT 访问 GUI(f.e。未准备好用户输入,因为它仍在更新其 HTML),您可能会遇到各种奇怪的问题结果,包括意外错误、挂起、不稳定。
那么您如何等待列表完成?我不知道,因为这在很大程度上取决于您的应用程序刷新其 GUI 的方式。您需要探索它,并集成一些等待满足正确条件的同步代码。
不幸的是,有时这是一项非常糟糕的工作。
一个合适的解决方法(也是验证我的假设是否正确的好方法)可能是在第一次点击和列表项点击之间插入一个较长的延迟 select离子点击。 (做类似事情的一种快速方法是单步执行代码。)如果这不会产生任何错误或问题,您可以非常确定它就是我所描述的,并且您可以尝试使用较低的延迟持续时间来找到物有所值。
感谢大家的回复。
问题原来是由于对象没有很好地添加到存储库中。
最终通过正确添加它来修复它。
我需要一些帮助来从下拉列表中选择一个值。下拉列表是一个 WebElement,流程在应该选择值的点之前运行良好。
我的代码如下:
.Browser("Browser").Page("PageName").WebElement("DropDownList").Click
.WebList("ListOfItems").Select(itemToSelect)
注意:itemToSelect 是需要从列表中选择的项目的名称,在函数中作为参数传递。
当 运行 代码时,我得到一个未指定的错误。
奇怪的是,在抛出错误之前,我可以在浏览器中看到从列表中选择的值,因为选择它时,表单中的某些字段会发生变化。此外,如果我在错误消息面板中按 "Skip",该过程将继续进行,就好像什么都没发生一样。
我确定错误来自 .WebList("ListOfItems").Select(itemToSelect)
,但我不知道如何修复它。
试试这个 code.It 适合我。
StrAllItems = Split(Browser("name:=.*").Page("title:=.*").WebList("name:=.*").GetRoProperty("all items"),";")
For intCounter = Lbound(strAllItems) to Ubound(strAllItems)-1
If Browser("name:=.*").Page("title:=.*").WebList("name:=.*").GetItem(intCounter)= "SomeValue" Then
Browser("name:=.*").Page("title:=.*").WebList("name:=.*").Select (intCounter)
Exit For
End If
Next
如果有帮助,请告诉我。
如果测试运行正确,而您只是遇到了一个多余的错误,您可以忽略这个特定的错误。当然,最好了解错误的来源,您可能应该联系 MicroFocus 支持,但同时您可以关闭对违规行的错误处理。
Browser("Browser").Page("PageName").WebElement("DropDownList").Click
On Error Resume Next ' turn off error handling
Browser("Browser").Page("PageName").WebList("ListOfItems").Select(itemToSelect)
On Error Goto 0 ' turn error handling back on
顺便说一句,我稍微更改了您的代码以使其有效,我认为这就是您的代码的真实样子。
可能的时间问题:您可能需要等待孔列表出现,然后再 select 项目。
通常,项目存在,但应用仍在更新其 GUI。
每当您在应用程序未空闲时使用 UFT 访问 GUI(f.e。未准备好用户输入,因为它仍在更新其 HTML),您可能会遇到各种奇怪的问题结果,包括意外错误、挂起、不稳定。
那么您如何等待列表完成?我不知道,因为这在很大程度上取决于您的应用程序刷新其 GUI 的方式。您需要探索它,并集成一些等待满足正确条件的同步代码。 不幸的是,有时这是一项非常糟糕的工作。
一个合适的解决方法(也是验证我的假设是否正确的好方法)可能是在第一次点击和列表项点击之间插入一个较长的延迟 select离子点击。 (做类似事情的一种快速方法是单步执行代码。)如果这不会产生任何错误或问题,您可以非常确定它就是我所描述的,并且您可以尝试使用较低的延迟持续时间来找到物有所值。
感谢大家的回复。 问题原来是由于对象没有很好地添加到存储库中。 最终通过正确添加它来修复它。