我有一个带有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类型的对象。