2010-08-19 56 views
9

使用FirefoxDriver寫測試時,FirefoxDriver:如何禁用javascript,css並使sendKeys類型立即生效?

我發現加載的頁面真的很慢,因爲JavaScript和css被執行。無論如何,禁用此?甚至可以將Noscript插件安裝到配置文件中?

此外,sendKeys()實際上輸出文本。但是,對於長文本來說這很慢,無論如何要立即在輸入框中輸入所有字符串?

+1

通過使整個字符串一次出現來顛覆WebDriver。 WebDriver被設計爲模仿用戶,用戶不會奇蹟般地使文本出現,他們將其輸出。它可能需要稍長的時間,但它是一個真實的人的準確模擬。 – Ardesco 2012-02-07 14:11:52

+0

如果禁用JS,CSS,則整個頁面可能會中斷,因此Selenium WebDriver要執行的某些功能測試可能會中斷。測試的目的是功能性而非性能。 – 2014-04-10 07:58:50

回答

17

可以在FirefoxProfile禁用javascript:

FirefoxProfile profile = new FirefoxProfile(); 
profile.setPreference("javascript.enabled", false); 
WebDriver driver = new FirefoxDriver(profile); 

我不認爲有禁用CSS的方式,這不是你應該做的 - 這可能會破壞你的web應用程序,並禁用JavaScript可能做到這一點太。

無法直接設置文本字段的值 - WebDriver旨在模擬真正的用戶「駕駛」瀏覽器 - 這就是爲什麼只有sendKeys。

但是,您可以通過JavaScript調用設置元素的值(如果您不會禁用它)。這對於長時間的測試速度更快,但是這不是用戶交互所以有些驗證可能不會被觸發的仿真,所以請謹慎使用:

private void setValue(WebElement element, String value) { 
    ((JavascriptExecutor)driver).executeScript("arguments[0].value = arguments[1]", element, value); 
} 

,並使用它:

WebElement inputField = driver.findElement(By...); 
setValue(inputField, "The long long long long long long long text......"); 
0

而且您可以使用PhantomJS是沒有用戶界面的WebKit瀏覽器,因此它比FireFox或Chrome更快。 PhantomJS支持Web驅動程序。