2017-10-16 73 views
-1

我想將機器人中的xpath轉換爲python代碼。我想在機器人下面的XPath轉換爲Python代碼將Robot Framework xPath轉換爲等效的Selenium Python。

此作品在機器人:

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]"} 

and

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

引起:

'WebElement' object does not support indexing 
+0

「不要工作」是一個相當廣泛的領域。你能向我們提供錯誤信息嗎? –

+0

我添加了錯誤。 – Dani

回答

0

它開始工作時,我包裹帶括號(...)的XPath語句:

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

它失敗了,因爲你已經把第一蟒蛇嘗試沒有與RF中相同的xpath;)。

在原始的xpath中,表達式用括號(expression)包圍,然後是索引。其中讀取 - 查找匹配表達式的所有元素,並返回第二個。

沒有括號是 - 找到所有th與階級,這是他們的父母元素的第二個孩子 - 完全不同的:)

爲了記錄在案,修正後的第二蟒蛇應該試圖

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

find_elements_by_xpath將返回與表達式匹配的所有元素作爲列表,並且[1]將返回該列表中的第二個元素 - python的列表是基於零的(從索引0開始),而xpath的基於一個。