我有一个带有python脚本的套件,用于使用squish测试Java应用程序。

在测试中,我得到一个名为menuObj的对象,其中包含一个名为items的属性,其类型为JavaArray。当我尝试使用getattr()获得该属性时,我得到一个包含属性而不是此类列表(或包含列表中项目的字符串)的对象。

什么是正确的方法?

预期= [MenuItem {Project Ctrl + Shift + D},MenuItem {System Ctrl + Shift + M},MenuItem {Panel}]
获得=包含三个属性。

最佳答案

当访问属性或调用作为/返回Java数组的方法时,Squash产生JavaArray

要访问该数组中的元素,请使用JavaArray.at(int)方法:

items_array = swtMenuObj.items
test.log("Type of items container/array: %s" % className(items_array))
test.log("A: Item 0 text: %s" % items_array.at(0).text)
// Example output/log entries:
//  JavaArray
//  &File


items_array2 = getattr(swtMenuObj, "items")
test.log("Type of items container/array: %s" % className(items_array))
test.log("B: Item 0 text: %s" % items_array2.at(0).text)
// Example output/log entries:
//  JavaArray
//  &File


使用之间应该(对我来说)没有区别。

menuObj.items


...和...

getattr(menuObj, "items")


...两者都产生一个JavaArray类型的对象。

09-27 16:12