从对象获取JavaArray属性

时间:2019-06-19 21:22:34

标签: java python squish

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

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

什么是正确的方法?

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

1 个答案:

答案 0 :(得分:0)

在访问属性或调用作为/返回Java数组的方法时,压缩会产生JavaArray

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

    Job job = Job.getInstance(cfg);
    //指定本程序的jar包所在的本地路径  把jar包提交到yarn
    job.setJarByClass(WordcountDriver.class);
    job.setMapperClass(WordcountMapper.class);
    job.setReducerClass(WordcountReduce.class);

    job.setNumReduceTasks(0);
    //job.setInputFormatClass(ERFInputFormat.class);
    job.setOutputFormatClass(TableOutputFormat.class);
    job.getConfiguration().set(TableOutputFormat.OUTPUT_TABLE, "gua");
    job.setMapOutputKeyClass(ImmutableBytesWritable.class);
    job.setMapOutputValueClass(Put.class);

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

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

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