2015-07-20 128 views
1

單擊以下HTML代碼的元素不起作用。無法使用Xpath查找元素

a class="add" href="/travelPlan_revamp/addTravel.htm?travel_type=D">Add</a> 

我使用的是下一個的XPath:顯示html/body/div[1]/div[2]/div/a

No Such Element Found例外。

+0

確保元素不在iframe內。 Xpath可以通過Firebug獲得。 –

回答

1

對不起你們的事情是它在iframe中。現在我已經通過切換到iframe然後單擊一個事件來找到解決方案。 (「rightMenu」);()。 driver.findElement(By.xpath(「html/body/div [1]/div [2]/div/a」))。click();

0

很難判斷您的XPATH表達式在沒有HTML的情況下是否正確。 你XPATH表達式告訴:

  • 採取 「a」 元素
  • 在第二個div元素
  • 在第一個div元素
  • 在主體元素
  • 那就是在HTML元素

因此檢查是否存在檢查Xpath表達式的「a」元素。

1

首先確保web元素不在iframe內。 如果是,那麼你需要先切換到iframe,然後嘗試點擊元素。

另外,嘗試下面的XPath,如果你已經捕獲錯誤的XPath: -

//a[@class='add' and .='Add']

1

的絕對XPath總是以正斜槓 '/' 開頭。我認爲你已經使用了絕對的xpath,或者你錯過了'/'或者你在這裏引用了錯誤。請驗證它。通常絕對的xpath將看起來像/ HTML /體/形式/ DIV [3]/DIV [2]/DIV [1]/DIV [2] /輸入

1

嘗試此XPath:

//a[contains(text(),'Add')]; 
+0

再次出錯 org.openqa.selenium。InvalidSelectorException:無效的選擇器:由於以下錯誤,無法定位帶有xpath表達式的元素// a [contains(text(),'Add')]: TypeError:未能在'Document'上執行'createNSResolver':參數1不是'節點'類型。 – Lokesh

0
//a[@class='add' and text()='Add'] 

試試這個。

通過哪種方法查找元素?

@FindBy (how = How.XPATH) 

driver.findElement(By.xpath()); 

有時@FindBy符號不喜歡和XPath的正常工作。

+0

我已經使用driver.findElement(By.xpath());.它仍然顯示錯誤 – Lokesh

+0

只是爲了確保在確保頁面已加載,然後再嘗試查找元素?你能分享一下尋找元素的代碼片段嗎?不要擔心,如果你提供了正確的html,問題在於xpath,因爲許多解決方案之一應該可以工作 – Iridann

+0

如果你已經解決了問題,你可以關閉它並標記答案,否則你能夠提供更多的信息我們可以更好地解決問題? – Iridann

0

嘗試用下面這樣的XPath

//一個[包含(文本(), '添加')]

+0

錯誤再次org.openqa.selenium.InvalidSelectorException:無效的選擇器:由於以下錯誤,無法找到具有xpath表達式的元素// a [contains(text(),'Add')]:TypeError:未能執行'在'Document'上創建NSResolver':參數1不是'Node'類型。 – Lokesh