2010-08-19 3 views
9

При использовании FirefoxDriver для написания тестовFirefoxDriver: как отключить javascript, css и сделать sendKeys типа мгновенно?

Я обнаружил, что загрузка страниц очень медленная из-за выполнения javascript и css. Есть ли способ отключить это? возможно даже установить плагин Noscript в профиль?

дополнительно, отправитьKeys(), на самом деле выводит текст. однако, это довольно медленно для длинного текста, так или иначе, чтобы сразу ввести всю строку в поле ввода?

+1

Вы подрываете WebDriver, создавая сразу всю строку. WebDriver предназначен для эмуляции пользователя, пользователь не волшебным образом создает текст, они его вводят. Это может занять немного больше времени, но это точная эмуляция реального человека. – Ardesco

+0

Если вы отключите JS, CSS, вся страница может сломаться, так что некоторые функциональные проверки, которые вы собираетесь выполнять Selenium WebDriver, могут быть прерваны. Цель тестирования - «Функциональная», а не «Производительность». –

ответ

17

Вы можете отключить JavaScript в FirefoxProfile:

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

Я не думаю, что есть способ отключить CSS, и это не то, что вы должны сделать - это может привести к поломке вашего веб-приложения, и отключение 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.