2016-10-21 23 views
0

我試圖找到在亞馬遜主頁Ajax控件(鼠標)爲標誌。如何處理元素的變量的XPath(XPath的不斷變化)中硒的webdriver

WebElement element = driver.findElement(By.xpath("//*[@id='nav-link-yourAccount']")); 

但是這個元素定位工程一些時間和其他時間沒有找到元素和腳本失敗。

我注意到這個元素的Xpath有時會改變爲//*[@id='nav-link-yourAccount']/span[1],沒有任何其他可以用來定位這個元素的唯一標識符。

請你讓我知道如何解決這個變量的xpath問題。

+0

如果你想找到ID的元素,爲什麼不使用'By.id()'? – JLRishe

+0

@JLRishe說得對。嘗試一次。仍然問題再現,然後分享您的HTML代碼 –

回答

0

如果您未能在其中一個xpath值處找到元素,則可以嘗試搜索另一個xpath值。您可以使用ExpectedConditions等待某個元素存在一段時間。如果過了這段時間,找不到元素,則使用第二個定位器查找元素。這假定xpath只在這兩個已知值之間變化。另外,一旦找到元素,您可能需要對元素的其他屬性進行一些斷言,以進一步確保您找到了要查找的元素。 這裏有一個關於等待元后:​​

Equivalent of waitForVisible/waitForElementPresent in Selenium WebDriver tests using Java?