2017-05-27 118 views
0

我輸入密碼並檢查它是否工作。 enter image description here在Selenium中處理彈出窗口

輸入了錯誤的密碼後,站點重新加載並彈出。 enter image description here

如何處理彈出窗口?例如,我怎樣才能自動點擊彈出窗口中的元素?

我的代碼:

from selenium.webdriver.support import expected_conditions as EC 
    while (2>1): 
       Sam = browser.find_element_by_css_selector("input[id=1]") 
       Sam.send_keys(i) 
       login = browser.find_element_by_css_selector("input[id=2]") 
       login.click() 
       if EC.alert_is_present: 
        browser.switch_to.alert.accept() 
       else: 
        print i 
        break; 

我收到此錯誤:

Traceback (most recent call last): 
    File "<pyshell#58>", line 1, in <module> 
    sexy() 
    File "<pyshell#57>", line 3, in sexy 
    browser.get('http://eps.gpeonline.co.in/') 
    File "C:\Python27\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 264, in get 
    self.execute(Command.GET, {'url': url}) 
    File "C:\Python27\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 252, in execute 
    self.error_handler.check_response(response) 
    File "C:\Python27\lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 194, in check_response 
    raise exception_class(message, screen, stacktrace) 
WebDriverException: Message: Failed to decode response from marionette 
+0

看來,錯誤與警報處理無關。你的腳本未能執行'browser.get('http://eps.gpeonline.co.in/')' – Andersson

+0

@Andersson但是如果我刪除了'if'和'else'並且手動點擊'ok'腳本就可以正常工作 –

+0

在頁面加載後嘗試事件調度程序。 – PRABA

回答

1

您使用EC.alert_is_present錯誤:你if條件總是返回TrueEC.alert_is_present就是一個類。嘗試使用下面try/except塊,而不是if/else

from selenium.common.exceptions import TimeoutException 
from selenium.webdriver.support.ui import WebDriverWait as wait 

try: 
    wait(browser, 1).until(EC.alert_is_present()).accept() 
except TimeoutException: 
    print i 
    break 

這應該允許您接受警告,如果它存在,或者打印i並打破循環,如果它沒有在1秒鐘內出現。(你可以改變超時值如果需要)

相關問題