有什么方法可以使用 Selenium 来查找所有在鼠标悬停时会以某种方式改变页面的元素?(例如触发下拉菜单、工具提示文本,或者只是简单地更改链接颜色)
我能想到的唯一方法是在页面加载后立即截取基线屏幕截图,然后循环浏览页面上的每个元素,将鼠标悬停在它上面,然后再截取另一个屏幕截图与基线进行比较。
编辑:您基本上是在寻找所有具有 :hover CSS 属性或 onMouseOver javascript 事件的元素,但由于 HTML 中通常不提供该信息,因此我不确定 XPath 是否有帮助。
有什么方法可以使用 Selenium 来查找所有在鼠标悬停时会以某种方式改变页面的元素?(例如触发下拉菜单、工具提示文本,或者只是简单地更改链接颜色)
我能想到的唯一方法是在页面加载后立即截取基线屏幕截图,然后循环浏览页面上的每个元素,将鼠标悬停在它上面,然后再截取另一个屏幕截图与基线进行比较。
编辑:您基本上是在寻找所有具有 :hover CSS 属性或 onMouseOver javascript 事件的元素,但由于 HTML 中通常不提供该信息,因此我不确定 XPath 是否有帮助。
这是您问题的部分解决方案,因为我不知道基于 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());
}
我问自己同样的问题,我得出的结论(因为我不太了解 Web 开发)是我最好的选择是修改 Visual Event 2 以从网页中获取所有 Javascript 事件。它有点工作,我没有得到任何其他答案,所以我认为这是唯一的方法。如果您希望我分享我的代码,请告诉我,因为找到一个应该修改 Visual Event 2 以便您可以访问他们的事件对象的确切位置有点棘手。