2010-08-19 4 views
9

Al usar FirefoxDriver para escribir pruebas,FirefoxDriver: cómo deshabilitar JavaScript, CSS y hacer Sendkeys tipo al instante?

Descubrí que la carga de páginas es muy lenta debido a que javascript y css se están ejecutando. ¿Hay alguna forma de desactivar esto? posible incluso instalar el complemento Noscript al perfil?

, además, Sendkeys(), en realidad tipos fuera del texto. sin embargo, esto es bastante lento para texto largo, de todos modos para escribir al instante toda la cadena en el cuadro de entrada?

+1

Está subvirtiendo WebDriver haciendo que toda la cadena aparezca a la vez. WebDriver está diseñado para emular a un usuario, un usuario no hace que el texto aparezca mágicamente, lo tipean. Puede tomar un poco más de tiempo, pero es una emulación precisa de una persona real. – Ardesco

+0

Si deshabilita JS, CSS, toda la página podría romperse, por lo que algunas de las pruebas funcionales que va a ejecutar Selenium WebDriver podrían verse interrumpidas. El propósito de la prueba es funcional, no de rendimiento. –

Respuesta

17

Puede desactivar JavaScript en FirefoxProfile:

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

No creo que hay una manera de desactivar CSS y esto no es lo que debería hacer - esto puede romper su aplicación web y deshabilitar JavaScript puede hacer esto también.

No hay forma de establecer directamente el valor del campo de texto: WebDriver está diseñado para simular que el usuario real "maneja" el navegador; por eso solo hay sendKeys.

Sin embargo se puede establecer el valor del elemento a través de llamada JavaScript (si no va a desactivar, por supuesto). Esto es más rápido para la prueba larga, pero esto no es la emulación de la interacción del usuario por lo que no se pueden desencadenar algunas validaciones, a fin de utilizar con precaución:

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

y usarlo:

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

también puede utilizar PhantomJS es el navegador WebKit sin interfaz de usuario por lo que es realmente más rápido que Firefox o Chrome. Hay soporte de controlador web para PhantomJS.

Cuestiones relacionadas