如果您使用继承的库,那么您的测试数据需要导入 Selenium2Library 或您的自定义库,但不能同时导入两者。如果只通过共享资源文件导入,而不是直接在测试中导入,这样更容易控制。
另一种选择是创建一个扩展 Selenium2Library 的库而不替换它:
from robot.libraries.BuiltIn import BuiltIn
class Selenium2LibraryExt(object):
@property
def _s2l(self):
return BuiltIn().get_library_instance('Selenium2Library')
def get_all_texts(self, locator):
"""Returns the text values of elements identified by `locator`."""
elements = self._s2l._element_find(locator, False, True)
return [e.text for e in elements]
如果您使用的是最新版本的 Selenium2Library (>= 1.7),Get Webelement 和Get Webelements允许您做很多没有关键字的事情...
@{texts} Create List
@{elems} Get Webelements some locator
:FOR ${elem} IN @{elems}
\ ${text} Get Text ${elem}
\ Append To List ${texts} ${text}
同样的事情,但使用扩展变量语法获取文本以使用webelement。
@{texts} Create List
@{elems} Get Webelements some locator
:FOR ${elem} IN @{elems}
\ Append To List ${texts} ${elem.text}
或者在 Python 中:
from robot.libraries.BuiltIn import BuiltIn
class Selenium2LibraryExt(object):
def get_all_texts(self, locator):
"""Returns the text values of elements identified by `locator`."""
s2l = BuiltIn().get_library_instance('Selenium2Library')
elements = s2l.get_webelements(locator)
# or elements = BuiltIn().run_keyword('Get Webelements', locator)
return [e.text for e in elements]
另请参阅https://stackoverflow.com/a/35323931/2532697