2011-08-11 23 views
6

Estoy usando el enlace Selenium python para configurar una prueba de automatización para nuestra aplicación web. Tengo un problema al probar la web en el servidor beta porque requiere autenticación HTTP para un nombre de usuario y contraseña de la intranet.Cómo enviar autenticación HTTP con Selenium python-binding webdriver

from selenium import webdriver 

driver = webdriver.Firefox() 
driver.get("https://somewebsite.com/") 

necesito presentar un nombre de usuario y una contraseña para el diálogo emergente al acceder http://somewebsite.com/

¿Hay una clara forma de hacer esto?

Respuesta

7

Me han encontrado una solución a esta pregunta:

from selenium import webdriver 

profile = webdriver.FirefoxProfile() 
profile.set_preference('network.http.phishy-userpass-length', 255) 
driver = webdriver.Firefox(firefox_profile=profile) 
driver.get("https://username:[email protected]/") 

La parte FirefoxProfile es para cerrar el diálogo de confirmación porque por defecto de Firefox mostrará un cuadro de diálogo emergente para evitar pishing.

+0

esta solución funcionó para mí también (I ejecutar la última versión de Firefox en Windows XP SP3, usando Python y selenio). –

+0

La solución no funciona para mí ... – Alex

+1

Esto ya no funciona – DelightedD0D

0

Otra solución:

inicio de sesión con solicitudes de pitón, obtener las cookies, y empujar las galletas en el navegador de selenio

 


    import requests 
    from selenium import webdriver 
    from requests.auth import HTTPBasicAuth 

    session = requests.Session() 
    www_request = session.get('http://example.com', auth=HTTPBasicAuth('username','password'), allow_redirects=False) 

    driver = webdriver.Remote(...) 
    #chrome needed to open the page before add the cookies 
    driver.get('http://example.com') 

    cookies = session.cookies.get_dict() 
    for key in cookies: 
     driver.add_cookie({'name': key, 'value': cookies[key]}) 

    driver.get('http://example.com') 

 
Cuestiones relacionadas