我需要滚动到 WPF 应用程序的表中存在的元素,该值是在运行时动态提供的。
我有以下代码,当滚动条正确移动但不会滚动到长列表末尾附近的元素时,它对于小型列表视图运行良好。
我的列表如下,我使用名称滚动(A1
, A2
, ...)
A1 1 3
A2 1 5
S1 1 3
Q2 1 5
.....
.....
Z7 1 3
Z82 1 5
Z9 1 3
Imports SilkTest.Ntf.Wpf
Public Module Main
Dim _desktop As Desktop = Agent.Desktop
Public Sub Main()
Dim iPosition As Double = 0.5
Dim iSumPosition As Double = 0.0
Dim sObjlocator As String = "//WPFListView[@automationId='MyListView']"
Dim sData As String = "Z118"
Dim sObjSublocator As String = "//WPFToggleButton[@caption='*']"
Dim rows As IList = _desktop.WPFListView(sObjlocator).FindAll(sObjSublocator)
Dim sObjExist As Boolean = False
For Each row As WPFToggleButton In rows
Dim sString As String = row.Text
Console.WriteLine(sString) ' <--names
If Trim(sString) = sData Then
sObjExist = True
Exit For
Else
iSumPosition += iPosition
Console.WriteLine(iSumPosition) ' <--Position
_desktop.WPFListView(sObjlocator).ScrollToPosition(iSumPosition, Orientation.Vertical)
End If
Next
End Sub
End Module
问题:
如下面的输出所示,打印的行A1
, A10
, ... fromConsole.WriteLine(sString)
和数字 fromConsole.WriteLine(iSumPosition)
仅适用于屏幕外的几个对象,滚动条垂直向下移动,但如果我的列表很大并且我需要滚动多次然后滚动不再起作用。
对于列表末尾附近的名称,滚动条不会滚动到末尾,只有当我的列表非常小时,它才会向下滚动到最后一个元素。
在调试模式下,我看到行列表 ( Dim rows As IList = _desktop.WPFListView(sObjlocator).FindAll(sObjSublocator)
) 没有列表末尾附近元素的值(名称)。
在下面的输出中,我们可以看到最初打印了名称和位置,但在长列表的末尾附近只打印了位置。
输出:
A1
0.5
A10
1
A11
1.5
A12
2
...
...
...
9.5
10
10.5
附加信息:
- 定位器类型是 WPFScrollBar。
- SilkTest 中的 WPF 预填充表单设置为:是
- 使用自动化测试工具:Microfocus SilkTest 17.5