2011-10-08 74 views
12

我使用硒WebDriver語法。我知道,在硒基於服務器的語法,您可以通過觸發一個JavaScript事件:如何在硒中激發JS事件?

Selenium selenium = new DefaultSelenium("localhost", server.getPort(), 
      "*iexplore", "http://www.eviltester.com"); 
selenium.fireEvent("lteq30", "blur"); 

我怎麼做一個應用程序一樣,用的webdriver(例如,FirefoxDriver)創造出來的?

回答

17

不幸的是,硒的webdriver設計師明確decided not to include這個功能在硒2.

這是一個深思熟慮的決定不包括在webdriver的, 此功能,因爲它通常是解決合成事件未 表現正常黑客攻擊。我們寧願爲原生事件提供很好的 支持以消除這種需求,所以我們將繼續改進以推進 。用戶永遠不會發起焦點事件,他們會點擊 表單控件。這就是你的測試應該做的。

這樣說,你可以可以執行你想要的任何JavaScript代碼。因此,您應該查看如何使用javascript來觸發事件。看看this StackOverflow question的靈感。

然後,你可以做這樣的事情:

FirefoxDriver driver = new FirefoxDriver(); 
driver.ExecuteScript("[your fire event javascript code]"); 

我敢肯定,你可以創建一個包裝函數來基本實現同樣的事情fireEvent

+0

只會運行點擊()事件中的JS做的工作或我是不是真的需要運行的代碼的具體功能?如果是後者,這看起來像是引入測試的一種醜陋的依賴。 –

5

另一種解決方案:

((JavascriptExecutor) driver).executeScript("return document.getElementById('element').blur()"); 
+1

爲什麼你在這裏有一個return語句?沒有回報,它會不會奏效? –

+1

函數不需要return語句。但是,隨着退貨聲明,您還會收到回覆。 –

相關問題