2017-06-07 140 views
0

我正在嘗試針對亞馬遜網站編寫Selenium測試。我想獲得「登錄」元素,以便我可以點擊它。Selenium xpath:元素在亞馬遜網站上不可見

網址:www.amazon.ca

這是我的硒代碼:

driver.findElement(By.xpath("//a[@data-nav-role='signin']")).click(); 

,但我得到Element not visible例外。

我曾嘗試在元素查找前放置Thread.sleep(5000),但仍然是同樣的問題。

我有其他的方式來選擇元素,但我想知道爲什麼這個Xpath不能在我的代碼中工作。

注意:在Chrome DevTool控制檯嘗試它,它工作正常,有$x("//a[@data-nav-role='signin']")

+1

試試這個 - driver.findElement(By.xpath('//一個[@數據NAV-角色= '登入'] [1]')) – Ankur

回答

2

的選擇,你選擇了返回多個元素即3.您可以驗證通過使用findElements代替findElement

您可以爲要點擊的特定元素提供精確的選擇器,也可以使用findElements獲取所有匹配元素,循環遍歷它們並單擊具有匹配屬性的元素,例如,文本。

嘗試:

driver.findElement(By.id("nav-link-yourAccount")).click(); 
0

我檢查了現場,我們需要鼠標到菜單之前,使按鈕可見的標誌。下面的代碼可能會給你一些想法。

//Mouse over to the menu 
Actions action = new Actions(webdriver); 
WebElement we = webdriver.findElement(By.xpath("//*[@id=\'nav-link-yourAccount\']/span[1]")); 
action.moveToElement(we).build().perform(); 
//Now perform sign in button clicking action since its visible now 

希望這可以幫助你。謝謝。

0

嘗試點擊的XPath:

//一個[@ ID = '導航鏈接-yourAccount']/SPAN