Selenium xpath:亚马逊网站上不可见的元素

时间:2017-06-07 02:14:54

标签: selenium exception xpath selenium-webdriver amazon

我正在尝试针对亚马逊网站编写Selenium测试。我想得到"登录"元素,以便我可以点击它。

url:www.amazon.ca

这是我的Selenium代码:

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']")

中正常工作

3 个答案:

答案 0 :(得分:2)

您选择的选择器会返回多个元素,即3.您可以使用findElements代替findElement来验证。

您可以为要单击的特定元素提供精确的选择器,也可以使用findElements获取所有匹配的元素,循环浏览它们并单击具有匹配属性的元素,例如:文本。

尝试:

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

答案 1 :(得分: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

希望这会对你有所帮助。感谢。

答案 2 :(得分:0)

尝试点击xpath:

  

//一个[@ ID = 'NAV-链路yourAccount'] /跨度