java - openqa - ¿Cómo realizar la autenticación básica para FirefoxDriver, ChromeDriver y IEdriver en Selenium WebDriver?
selenium mac (7)
Agregue este nuevo perfil de Firefox en su código
ProfilesIni profile = new ProfilesIni();
FirefoxProfile myprofile = profile.getProfile("myProjectProfile"); //replace "myProjectProfile" with your profile"
WebDriver driver = new FirefoxDriver(myprofile);
Configuración de configuración de Firefox
Esto funciona bien sin solicitar autenticación cuando realiza la siguiente configuración.
- Escribe " about: config " en tu URL de FF
- Ahora escriba " Proxy " en el campo de búsqueda
- Asegúrate de que " signon.autologin.proxy " esté configurado como " verdadero " (por defecto es "falso")
Cargar perfil Chrome predeterminado / personalizado para ejecutar pruebas utilizando Selenium WebDriver
- Descargar chromedriver.exe
- Extraiga la carpeta chromedriver_win_26.0.1383.0.zip y ubique el archivo .exe en la carpeta C: /
Agregue este script en su código JAVA
DesiredCapabilities capability = DesiredCapabilities.chrome();
System.setProperty("webdriver.chrome.driver", "C:/chromedriver.exe");
capability.setCapability("chrome.switches", Arrays.asList("–disable-extensions"));
capability.setCapability("chrome.binary", "C:/Users/user_name/AppData/Local/Google/Chrome/Application/chrome.exe");
ChromeOptions options = new ChromeOptions();
options.addArguments("user-data-dir=C:/Users/user_name/AppData/Local/Google/Chrome/User Data/Default");
driver = new ChromeDriver(capability);
Nota: IE no necesita configuración de perfil para ejecutar pruebas porque se ejecutan en el usuario del servidor, mientras que Firefox y Chrome funcionan con binario.
Estoy usando Selenium-Firefox-driver y Selenium-Chrome-Driver versión 2.0a5 ( Web Driver API ), y estoy tratando de probar una aplicación web que tenga autenticación BASIC (hay una ventana emergente que aparece para autenticar al usuario cuando Toco cualquier página, la ventana emergente no es parte del HTML).
Ahora, necesito una estrategia para autenticar al usuario en Firefox, Chrome e IE (voy a importar el controlador IE pronto).
Estaba leyendo en algunos artículos que puedo establecer un perfil de Firefox, por ejemplo ... algo como:
FirefoxProfile ffProfile = new FirefoxProfile();
ffProfile.setPreference("network.http.phishy-userpass-length", 255);
WebDriver driver = new FirefoxDriver(ffProfile);
driver.get("http://username:password@hostname");
pero no parece funcionar para mí. ¿Alguien tiene una solución funcional para esos navegadores?
Es cierto, la autenticación HTTP Básica no es actualmente compatible, pero ahora funcionó para FF y para Chrome.
El código que escribí en las preguntas funciona para esos controladores. Solo traté de usar FF3.6 como navegador predeterminado de Firefox (instalado en la carpeta Firefox) en lugar de FF4 (aún no es compatible). Para IE, puedo intentar desactivar la autenticación a través del Registro de Windows.
Esta página http://code.google.com/p/selenium/issues/detail?id=34 puede ayudar.
Existe una solución para realizar la autenticación con Selenium 1.x al configurar manualmente los encabezados HTTP en http://mogotest.com/blog/2010/06/23/how-to-perform-basic-auth-in-selenium pero no piense que esto es transferible a Selenium 2, ya que no tiene acceso a los encabezados.
De acuerdo con la información here , se agregó ''Se Autenticación Básica para Selenio 2'' en Selenio 2 Beta 2, pero mirando a través del código fuente solo puedo verlo implementado como una forma de asegurar los Servidores de Selenio Remoto contra el acceso anónimo.
Así que creo que la respuesta es que la autenticación HTTP BÁSICA no es actualmente compatible.
Lo tengo que trabajar con Firefox webdriver por lo siguiente:
profile.SetPreference("network.automatic-ntlm-auth.trusted-uris", "google.com");
driver = new FirefoxDriver(profile);
driver.Navigate().GoToUrl("http://user:[email protected]");
No pude usar la autenticación básica con Selenium 2 y Chrome (Debido a un error con Chrome), así que creé una extensión para Chrome que envía las credenciales de autenticación básicas automáticamente (Consulte https://chrome.google.com/webstore/detail/basic-authentication-auto/dgpgkkfheijbcgjklcbnokoleebmeokn ).
Para una mayor portabilidad, esto puede ser manejado por el stub API y usando Alert .
Ejemplo de código Java ( sample ):
import org.openqa.selenium.Alert;
import org.openqa.selenium.security.Credentials;
public void authenticateUsing(Credentials credentials) {
private final Alert alert;
alert.authenticateUsing(credentials);
}
Ver también: auth_tests.py
O enviando claves manualmente como:
SendKeys("user");
SendKeys("{TAB}");
SendKeys("password");
SendKeys("~"); // Enter
Consulte también la siguiente solicitud de función: # 453 Authentic BASIC portátil en GitHub
Relacionado:
Si desea habilitar la autenticación HTTP en Internet Explorer, debe editar el registro y agregarlo (cree claves si no están presentes):
en
HKEY_CURRENT_USER/Software/Microsoft/Internet Explorer/Main/FeatureControl/FEATURE_HTTP_USERNAME_PASSWORD_DISABLE
, cree un DWORDiexplore.exe
con un valor de0
en
HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Internet Explorer/MAIN/FeatureControl/FEATURE_HTTP_USERNAME_PASSWORD_DISABLE
, cree un DWORDiexplore.exe
con un valor de0
Cierre y vuelva a abrir Internet Explorer
Si tienes un IE x64, la ruta es un poco diferente:
-
HKEY_LOCAL_MACHINE/Software/Wow6432Node/Microsoft/Internet Explorer/Main/FeatureControl/FEATURE_HTTP_USERNAME_PASSWORD_DISABLE