2017-12-08 70 views
0

Chrome에서 Selenium을 통한 인증 팝업 처리 문제가 있습니다. "메시지 : selenium.common.exceptions.NoAlertPresentException 열린없는 경고"Selenium에서 Chrome 경고 팝업이 감지되지 않습니다.

from selenium import webdriver 
from selenium.webdriver.common.keys import Keys 
import time 

driver = webdriver.Chrome() 
driver.get('URL') 
time.sleep(5) 
alert = driver.switch_to_alert() 
alert.send_keys('Username') 
alert.send_keys(Keys.TAB) 
alert.send_keys('Password') 

이는 error--

반환

다른 방법을, 나는 또한 다음 코드를 시도 :

from selenium import webdriver 
from selenium.webdriver.common.keys import Keys 
import time 

driver = webdriver.Chrome() 
driver.get('https://Username:[email protected]') 

두 번째 코드는 부분적으로 작동합니다 -

Chrome에서 사용자는 로그인했지만 페이지가로드되지 않습니다. 빈 페이지 만 표시됩니다. 빈 페이지가로드되면 사용자 자격 증명없이 URL 만 전달하면 제대로 작동합니다.

Firefox에서는 웹 페이지가 완벽하게로드됩니다.

기본적으로 Chrome에서 문제가 발생합니다.

도움을 주시면 감사하겠습니다.

감사합니다.

+0

url과 함께 사용자 이름과 암호를 보내보십시오. –

+0

나는 그것을 시험해 보았다. 내 질문에 게시 한 대체 코드에서 url과 함께 사용자 이름과 암호를 보냈습니다. 하지만 웹 페이지가 제대로로드되지 않습니다. – Sameem

+1

[Python Selenium Alert - Prompt 사용자 이름과 암호가 작동하지 않습니다.] (https://stackoverflow.com/questions/45328654/python-selenium-alert-prompt-username-and-password-is-not-working)) – DebanjanB

답변

0

시도한 두 번째 코드는 약간의 실수로 정확합니다.

public void loginToSystem(String username,String password, String url){ 
driver = webdriver.Chrome() 

driver.get("https://"+username+":"+password+"@ "+URL); 
} 
+0

안녕하세요, 입력 해 주셔서 감사합니다. 제안한 코드가 내 것과 크게 다르지 않습니다. 당신이 변수를 사용하는 것을 제외하고 나는 그들을 직접 전달하고 있었다. 정확히 내 코드에서 잘못된 점을 지적하십시오. 또한 코드에서 '@'다음에 공백 문자를 부여 했습니까? 내가 그걸 시도했을 때 공간은 % 20 후에 URL을 잘못 삽입했다. 두 번째 코드의 문제점은 웹 페이지가 제대로로드되지 않았기 때문입니다. 빈 화면이 표시되었습니다. 일시적인 해결 방법으로 대기 시간이 5 초가 지난 후에 URL을 다시 전달했으며 정상적으로 작동했습니다. – Sameem

0

먼저 경고를 기다리십시오.

wait = WebDriverWait(driver, 10) 
wait.until(EC.alert_is_present()) 

경고가있는 경우 forword를 다음 단계로 이동하십시오. 또한 테스트 케이스가 실패 할 때 경고가 실제로 나타나면 스크린 샷을 확인하십시오.

+0

time.sleep()은 팝업이 발생할 때까지 충분한 지연을 제공합니다. 예, 스크립트가 실패하면 경고가 나타납니다. – Sameem

+0

NoAlertPresentException을 제공하면 경고가 없음을 의미합니다. –

+0

당신은이 접근법을 점검 할 수 있습니다. 요소를 검사하고 xpath 또는 id를 찾고 다음과 같은 코드 요소로 시도하십시오 element = driver.find_element_by_id ('userName') element.send_keys ('Username')는 비밀번호와 제출 버튼에 대해 동일한 접근 방식을 따릅니다. 희망이 당신을 위해 작동합니다. –