无法从JavaTable获取单元数据

时间:2018-06-16 20:58:15

标签: java vbscript automation hp-uft

我有下表,我无法得到它的文字,一个写着'文字要回溯'。

Table from were I am trying to get the text

我正在使用的代码如下,在这种情况下,它给我一个空白字符串:

Dim a
TableRows = WpfWindow("Window").JavaWindow("JFrame").JavaTable("JavaTable").GetROProperty("rows")
For Iterator = 0 To TableRows Step 1
a = WpfWindow("Window").JavaWindow("JFrame").JavaTable("JavaTable").getCellData(Iterator,1)
Next

我也试过下面的代码,但没有成功,在这种情况下,它给了我一个错误:

Dim a
TableRows = WpfWindow("Window").JavaWindow("JFrame").JavaTable("JavaTable").GetROProperty("rows")
For Iterator = 0 To TableRows Step 1
a = WpfWindow("Window").JavaWindow("JFrame").JavaTable("JavaTable").Object.getValueAt(Iterator,1)
Next

2 个答案:

答案 0 :(得分:0)

你的桌子是基于awt或swt的桌子吗? (查找工具包类) 在swt的情况下,事情可能变得复杂,因为UFT主要依赖于单元格的getText JavaMethod来获取其中的值。如果开发人员使用JFace或一些复杂的渲染,您可能需要与他们坐下来,并要求从内存中读出单元格的文本值的正确方法。

大多数情况下,您必须使用.Object(Native Java)方法来访问TableItem对象,然后您可以使用getData.toString方法或其他方法尝试锁定getData()返回的对象。虽然在TableItem上使用set / get Data方法存储复杂数据可能是一种常见做法,但这不是一个规则。在某些情况下,您可能真的需要与开发人员坐下来,或者如果不存在反向工程师/自己阅读代码(当然只有在法律允许的情况下)

总结:您必须了解开发人员如何在表项中存储复杂数据,然后教UFT在需要时能够从中获取文本。这意味着使用.Object(Native Java方法)。

当然,如果您不想在测试库中看到此代码,您可以考虑使用UFT Java加载项扩展的扩展性工具包解决方案。

答案 1 :(得分:0)

你好我找到的解决方案比我想的更简单,实际上是我的朋友解决了它。它在下面:

 Text = "Text to be found"
RowCount = WpfWindow("Window").JavaWindow("JFrame").JavaTable("JavaTable").GetROProperty("rows")
For i = 0 To RowCount-1
WpfWindow("Window").JavaWindow("JFrame").JavaTable("JavaTable").ClickCell i,2
ToBeSelected = WpfWindow("Window").JavaWindow("JFrame").JavaTable("JavaTable").GetCellData(i,1)
If Instr(ToBeSelected,Text) > 0 Then
    WpfWindow("Window").JavaWindow("JFrame").JavaTable("JavaTable").ClickCell i,1
    Exit For
End If
Next