将Robot Framework xPath转换为Selenium Python等效项。

时间:2017-10-16 03:55:50

标签: python-2.7 selenium-webdriver robotframework

我正在尝试将机器人中的xpath转换为python代码。我希望Robot中的下面的xpath转换为python代码

这适用于Robot:

xpath=(//th[@class="picker-switch"])[2]

我在python中尝试过

self._driver.find_element_by_xpath("//th[@class='picker-switch'][2]")

导致以下错误:

NoSuchElementException: Message: no such element: Unable to locate element: {"method":"xpath","selector":"//th[@class='datepicker-switch'][2]"}

self._driver.find_element_by_xpath("//th[@class='picker-switch']")[2]

导致:

'WebElement' object does not support indexing

2 个答案:

答案 0 :(得分:0)

当我用括号(...)包含xpath语句时,它开始工作:

self._driver.find_element_by_xpath("(//th[@class='picker-switch'])[2]").click()

答案 1 :(得分:0)

它失败了,因为你在第一次python尝试中放入的不同于RF中的xpath;)。

在原始xpath中,表达式用括号(expression)包围,然后是索引。哪个读取 - 找到与表达式匹配的所有元素,并返回第二个。

没有括号 - 找到该类的所有th,它们是父元素的第二个子元素 - 完全不同:)

为了记录,纠正的第二次python尝试应该是

self._driver.find_elements_by_xpath("//th[@class='picker-switch']")[1]

find_elements_by_xpath将返回与表达式匹配的所有元素作为列表,[1]将返回该列表中的第2个元素 - python的列表从零开始(从索引0开始) ,而xpath' s - 基于一个。