【发布时间】:2013-06-28 17:03:36
【问题描述】:
我的项目正在使用 Robot Framework 和 Selenium2Library 来测试 Web 系统。
我需要使用 css 定位器找到的元素列表中的特定元素。例如,.innerTable>tbody>tr>td 将找到 10 个元素,我将需要这些元素中的第二个元素。在我之前的项目中,我可以执行以下操作来引用所需的元素:
specific_cell = driver.find_elements(By.CSS_SELECTOR, ".innerTable>tbody>tr>td")[1]
意味着它创建了一个元素列表并使用索引我可以选择一个特定的。但是有谁知道我是否可以用 Robot framework + Selenium2Library 做类似的事情?
我试图了解是否有办法只使用 Selenium2Library 关键字来达到结果。显然,现有的关键字是不可能的。
为了实现使用定位器标识的许多特定元素中的一个特定元素的可能性(在最初的问题中,这些元素是由 css 选择器找到的表格单元格),我们需要深入到 Selenium2Library 库并在那里创建新方法。
在 C:\Python27\Lib\site-packages\Selenium2Library\keywords_element.py 中可以添加这样的方法
def return_elements(self, locator):
"""Returns a list of elements identified by a given locator.
"""
elements = self._element_find(locator, False, True)
if elements is None:
raise AssertionError("Could not find element(s) '%s'" % (locator))
return elements
这将返回一个 Web 元素对象列表,该列表可用于指出特定元素,然后对其执行一些操作。但是,如果您需要诸如单击、获取文本或键入之类的操作,则必须在同一个类中创建其他方法。 好吧,这看起来不是最佳方式,但至少它确实有效。 另一种选择是使用 xpath 并且不用担心上面的编写,但是一旦您对包含大量相似元素的大页面进行成像并在此处添加使用 Internet Explorer 的要求,那么您可能要避免使用 xpath
【问题讨论】:
-
Selenium 2 是 webdriver。您应该能够使用这个确切的代码 sn-p 获取有问题的元素。你试过什么?
标签: python webdriver robotframework