我正在尝试将机器人中的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
答案 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 - 基于一个。