2013-06-13 65 views
0

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

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

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

+1

Selenium不支持CSS选择器,甚至使用Sizzle作为后备? – ZenMaster

+0

有没有办法使用CSS选择器来获取所有具有:hover选择器的元素而不知道元素的类名? – Dylan

+0

不是我所知道的。这将是元选择器,不是吗? 难道你不能添加一个类'可靠'或一些这样的? – ZenMaster

回答

1

我问自己the same question和我得出的结论(因为我不太了解web开发)是我最好的选择是修改Visual Event 2以获取网页上的所有Javascript事件。它有用,我没有得到任何其他答案,所以我认为这是唯一的方法。让我知道,如果你想让我分享我的代码,看到它是一种棘手的问题,发现应该修改Visual Event 2的地方,以便可以访问它们的事件对象。

1

这是一个部分解决你的问题,因为我不知道的一种方式(除为hover样式设置一个类名等)的基础上的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()); 
    } 
相关问题