在我的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”上失败了吗?
问题出在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()
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。