首页 > 解决方案 > Selenium 自动化 - 悬停下拉菜单不起作用

问题描述

我正在开发一个自动化脚本,其中一部分需要我将鼠标悬停在导航栏上以显示下拉菜单。该脚本是使用 NodeJS 编写的,使用的浏览器是 Internet Explorer。

导航源代码

...

    <ul class=navigation " data-dojo-attach-point="nonmMenu ">
        <li class= "dropdown ">
        <a href="javascript:void(0) "><i class="fa fa-clipboard nav-icon " aria-hidden="true "></i><span>Accounts</span></a>
        <div class='fulldrop i3">..</div>
        </li>
    </ul>

...

节点代码:

let xPathButton = "//span[text()='Accounts']";

//Find button to hover over
let buttonWithDropDown = driver.findElement(By.xpath(xPathButton));
//Hover
driver.actions().mouseMove(buttonWithDropDown).perform();

但是,这不起作用。最终目标是在出现下拉菜单后单击链接,我尝试过这样做,但由于元素不可见,我得到了异常ElementNotInteractableError: Cannot click on element。我会很感激一些正确方向的指示来解决这个问题。

更新:一直在看这个多一点;锚标记中的 aria-hidden 属性是否会导致硒驱动程序无法检测到该元素?

请注意,更改浏览器不是一种选择。

标签: node.jsseleniuminternet-explorerselenium-webdriverautomation

解决方案


尝试将鼠标悬停在 a 或 li 元素上。您也可以尝试点击:

By.xpath("//a[span[.='Accounts']]")
By.xpath("//li[.//span[.='Accounts']]")

您可以尝试在不使用 javascript 打开菜单的情况下打开菜单:

executeJavaScript("arguments[0].click();", yourDropdownMenuElement);

推荐阅读