如何在Webdriver上悬停在超链接上

4
我正在使用Selenium Webdriver进行我的项目。我已经成功地自动化了代码以鼠标悬停在图像上,但是,用这段代码却无法移动到超链接上。
我使用的代码是: Actions build1 = new Actions(driver); build1.moveToElement(WebElement).build().perform(); 我还尝试使用以下代码: Locatable hoverItem = (Locatable) driver.findElement(); Mouse mouse = ((HasInputDevices) driver).getMouse(); mouse.mouseMove(hoverItem.getCoordinates()) 但它也没有起作用。请帮助我解决这个问题。
4个回答

1

我曾经遇到过同样的问题,并通过将光标移动1像素来解决。最后一行触发了悬停事件。

Actions action = new Actions(driver);
action.moveToElement(element).build().perform();
action.moveByOffset(1, 1).build().perform();

0

试试这个:

Actions action = new Actions(webdriver);
WebElement we = webdriver.findElement(By.xpath("x_p_a_t_h"));
action.moveToElement(we).build().perform();

1
这有什么不同于他最初的 Actions build1 = new Actions(driver); build1.moveToElement(WebElement).build().perform(); - Mark Rowlands

0

我在DefaultSelenium类中使用了public void mouseOver(String)方法。代码的实质如下:

protected void hoverAction() {
    WebDriverBackedSelenium webDriver = some_elaborate_method_to_get_webdriver;
    webDriver.mouseOver("x_p_a_t_h");
}

您可能还需要考虑在悬停时设置一定的等待时间,以确保元素在失败之前得到渲染(例如,从链接启动的飞出菜单通常不会立即显示)。


@SudharsanSrinivasan 或许你需要确保元素已经被加载。在我的实现中(我们已经对 WebDriver 进行了相当详尽的扩展以获得单例实例),只有在元素已经被加载后,我们才使用 hoverAction。当使用 FirefoxDriver 时,我在这方面没有遇到任何测试失败的情况。 - radimpe
是的,元素已经加载。我能够点击超链接。但无法将鼠标悬停在上面。 - Sudharsan Srinivasan

0

其他所有的帖子都提出了我能想到的所有建议,但似乎没有一个有效。当我遇到这种情况时,我会退一步并问自己为什么需要悬停在超链接上。是为了检查alt文本吗?如果是这样,我会使用element.getAttribute("alt")并验证文本是否符合预期。我不需要测试浏览器的悬停功能。我唯一能建议的另一件事是确保在运行测试时鼠标光标不在浏览器窗口上。这也可能会影响鼠标悬停。


谢谢回复。我需要在鼠标悬停在超链接上时获取其颜色。关于第二点,是的。运行测试时光标不在浏览器窗口上。 - Sudharsan Srinivasan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接