0

有什么方法可以使用 Selenium 来查找所有在鼠标悬停时会以某种方式改变页面的元素?(例如触发下拉菜单、工具提示文本,或者只是简单地更改链接颜色)

我能想到的唯一方法是在页面加载后立即截取基线屏幕截图,然后循环浏览页面上的每个元素,将鼠标悬停在它上面,然后再截取另一个屏幕截图与基线进行比较。

编辑:您基本上是在寻找所有具有 :hover CSS 属性或 onMouseOver javascript 事件的元素,但由于 HTML 中通常不提供该信息,因此我不确定 XPath 是否有帮助。

4

2 回答 2

1

这是您问题的部分解决方案,因为我不知道基于 CSS 悬停属性进行选择的方法(除了为悬停样式设置类名):

  WebDriver driver = new FirefoxDriver();
    driver.navigate().to("http://yourdomain.com/page.html");
    List<WebElement> mouseoverElements = driver.findElements(By.xpath("//*[@onmouseover]"));
    System.out.println("Number of elements with a mouseover attribute: " + mouseoverElements.size());
    for (WebElement e : mouseoverElements) {
      System.out.println(e.getTagName() + ": " + e.toString());
    }
于 2013-06-13T13:49:27.117 回答
1

我问自己同样的问题,我得出的结论(因为我不太了解 Web 开发)是我最好的选择是修改 Visual Event 2 以从网页中获取所有 Javascript 事件。它有点工作,我没有得到任何其他答案,所以我认为这是唯一的方法。如果您希望我分享我的代码,请告诉我,因为找到一个应该修改 Visual Event 2 以便您可以访问他们的事件对象的确切位置有点棘手。

于 2013-06-13T23:33:05.073 回答