2011-08-11 4 views
6

웹 응용 프로그램에 대한 자동화 테스트를 설정하기 위해 Selenium python 바인딩을 사용하고 있습니다. 인트라넷 사용자 이름과 암호에 HTTP 인증이 필요하기 때문에 베타 서버에서 웹을 테스트하는 동안 문제가 발생했습니다.Selenium python-binding webdriver로 HTTP 인증을 제출하는 방법

내가 http://somewebsite.com/

이 할 수있는 깔끔한 방법이 있나요에 접속시 팝업 대화에 대한 사용자 이름과 암호를 제출해야

from selenium import webdriver 

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

?

답변

7

는이 질문에 대한 해결책을 발견 :

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]/") 

FirefoxProfile 부분은 기본적으로 파이어 폭스가 더럽게을 방지하기 위해 팝업 대화 상자를 표시합니다 때문에 확인 대화 상자를 닫입니다.

+0

이 솔루션 너무 나를 위해 일한 셀레늄의 브라우저에 쿠키를 밀어 (나는 Windows XP에서 파이어 폭스의 최신 버전을 실행 SP3, Python과 셀레늄 사용). –

+0

솔루션이 나를 위해 작동하지 않습니다 ... – Alex

+1

더 이상 작동하지 않습니다 – DelightedD0D

0

또 다른 해결책 : 파이썬 요청에

로그인, 쿠키를 얻고,

 


    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') 

 
관련 문제