使用Selenium查找网页上的所有“可悬停”元素

时间:2013-06-13 00:49:10

标签: java javascript selenium selenium-webdriver

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

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

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

2 个答案:

答案 0 :(得分: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());
    }

答案 1 :(得分:1)

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