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

Selenium xpath: element not visible on Amazon site

我正在尝试针对亚马逊网站编写 Selenium 测试。我想要获取 "Sign in" 元素以便我可以点击它。

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

您选择的选择器 returns 多个元素,即 3。您可以使用 findElements 而不是 findElement 来验证。

您可以为要单击的特定元素提供精确的选择器,也可以使用 findElements 获取所有匹配的元素,遍历它们并单击具有匹配属性的元素,例如文字.

尝试:

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

我已经检查过该站点,我们需要先将鼠标悬停在菜单上,才能使登录按钮可见。下面的代码可能会给你一些想法。

//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

希望对您有所帮助。谢谢

尝试点击 xpath:

//a[@id='nav-link-yourAccount']/span