尝试使用集成的Robot Framework运行Sikuli脚本,在GUI上自动测试程序 .

该程序在单独的进程中有大量的窗口 . Sikuli有一个本机App()命令可以帮助跟踪它们,但App()调用需要花费不可忽视的时间来执行 . 出于这个原因,我在启动时创建一个App()对象的字典,以便稍后引用 . 以下代码仅供参考,以显示结构,而不是完整或实际代码 .

示例代码:

class myLib(object): 
    def startProgram(self):
        self.program = Program(args)
        self.program.start()
        self.program.createAppDictionary()

    def doSomething(self, area)
        self.program.dictionary['a'].click(area)

 class Program(object): 
    def createAppDictionary(self): 
        for key, obj in dict(self.config.items('Section')).items():              
            self.dictionary[obj] = App(obj)

机器人框架测试文件:

***Settings***
 Library  myLib
 Suite Setup    Start Program

 ***Test Cases***
 Do Stuff
     Do Something   Here
     Do Something   There

上述操作因属性错误而失败 - 'str'没有属性'dictionary',因为程序已从对象转换为字符串 . 进行小的更改并将myLib作为sikuli脚本运行正常 .

有没有办法让设置中创建的对象通过测试用例在python代码中持久存在?我唯一的选择是将它们全部创建为变量,然后将它们传递给每个测试用例中的方法调用吗?

在“机器人用户指南”中进行了大量搜索,但未涵盖此方案 . 感谢任何帮助!