我试图导入python模块骑行超过3个小时但没有成功。我完成了第四个答案中解释的步骤,它建议创建一个python模块Selenium2LibraryExt。 How to get All Text in robot framework ?
我观察到的问题是,因为我在同一测试的其他代码中使用Selenim2Library,现在我导入Selenium2LibraryExt继承自Selenim2Library,我的测试不再知道,例如点击元素关键字来自Selenim2Library或Selenium2LibraryExt,它给了我多个关键字错误
所以我做到了 1-I删除
from Selenium2Library import Selenium2Library
从我的python模块的头部开始,但我让它在我的测试用例中保留为库:settings
Library Selenium2Library
它没有成功。 2 - 然后我删除了
Library Selenium2Library
从我的测试用例中添加:
from Selenium2Library import Selenium2Library
在我的python模块的头部。 但在这两种情况下我都会遇到错误。我怎么不在我的测试中看到2个selenium2library库?
由于
答案 0 :(得分:2)
如果您使用继承的库,那么您的测试数据需要导入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]
答案 1 :(得分:0)
因此,您可以通过指定要使用的特定库轻松解决此问题。例如:
Selenium2LibraryExt.Click Element