2013-06-13 96 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()); 
    } 
相關問題