开发者社区> 问答> 正文

机器人框架中的Python-Se2Lib没有属性“执行” 问

在我的Robot框架测试中,我需要一些自定义的python关键字(例如,按住CTRL键),在开始重构“大”自定义类之前,一切正常(但是在保持CTRL的这一部分中,我并没有真正更改任何内容)。现在我得到的AttributeError: 'Selenium2Library' object has no attribute 'execute' 代码是:

class CustomSeleniumLibrary(object):
    def __init__(self):
        self.driver = None
        self.library = None

    def get_webdriver_instance(self):
        if self.library is None:
            self.library = BuiltIn().get_library_instance('Selenium2Library')
        return self.library

    def get_action_chain(self):
        if self.driver is None:
            self.driver = self.get_webdriver_instance()
            self.ac = ActionChains(self.driver)
        return self.ac

    def hold_ctrl(self):
        self.get_action_chain().key_down(Keys.LEFT_CONTROL)
        self.get_action_chain().perform()

我只是直接在robot关键字中调用“ hold ctrl”,然后关键字文件将我的自定义类导入为Library(其他自定义关键字也起作用)...知道为什么它在“ execute”上失败了吗?

展开
收起
祖安文状元 2020-02-23 16:26:36 852 0
1 条回答
写回答
取消 提交回答
  • 问题出在ActionChains中,因为它需要webdriver实例,而不是Se2Lib实例。可以通过调用_current_browser()获得Webdriver实例。我以这种方式对其进行了重做,并且有效:

    def get_library_instance(self):
        if self.library is None:
            self.library = BuiltIn().get_library_instance('Selenium2Library')
        return self.library
    
    def get_action_chain(self):
        if self.ac is None:
            self.ac = ActionChains(self.get_library_instance()._current_browser())
        return self.ac
    
    def hold_ctrl(self):
        actionChain = self.get_action_chain()
        actionChain.key_down(Keys.LEFT_CONTROL)
        actionChain.perform()
    
    2020-02-23 16:26:45
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Python第五讲——关于爬虫如何做js逆向的思路 立即下载
Python第四讲——使用IPython/Jupyter Notebook与日志服务玩转超大规模数据分析与可视化 立即下载
Improving Python and Spark 立即下载