Python 在Selenium中处理弹出窗口

Python 在Selenium中处理弹出窗口,python,selenium,authentication,browser,automation,Python,Selenium,Authentication,Browser,Automation,我正在输入密码并检查它是否有效。 输入错误的密码后,网站将重新加载并弹出窗口。 如何处理弹出窗口?例如,如何自动单击弹出窗口中的元素 我的代码: from selenium.webdriver.support import expected_conditions as EC while (2>1): Sam = browser.find_element_by_css_selector("input[id=1]") Sam

我正在输入密码并检查它是否有效。

输入错误的密码后,网站将重新加载并弹出窗口。

如何处理弹出窗口?例如,如何自动单击弹出窗口中的元素

我的代码:

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
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
性感的
文件“”,第3行,以黄色显示
browser.get('http://eps.gpeonline.co.in/')
文件“C:\Python27\lib\site packages\selenium\webdriver\remote\webdriver.py”,第264行,在get中
self.execute(Command.GET,{'url':url})
文件“C:\Python27\lib\site packages\selenium\webdriver\remote\webdriver.py”,第252行,执行
self.error\u handler.check\u响应(响应)
文件“C:\Python27\lib\site packages\selenium\webdriver\remote\errorhandler.py”,第194行,在check\u响应中
引发异常类(消息、屏幕、堆栈跟踪)
WebDriverException:消息:未能解码来自木偶的响应

您使用的是
EC。存在警报
错误:您的
if
条件将始终返回
True
作为
EC。存在警报
只是一个类。如果/
其他
,则尝试使用下面的
尝试
/
块而不是

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秒内没有出现,则中断循环(如果需要,您可以更改超时值)

错误似乎与警报处理无关。您的脚本无法执行
browser.get('http://eps.gpeonline.co.in/“)
@Andersson但是如果我删除
if
else
并手动单击
ok
脚本在页面加载后运行,请尝试事件调度程序。@NarendraModi Off-topic:我想你的问题比弹出窗口或表单验证更大。如果印度官员发现你在冒充他们的总理,几十年后你就看不到终点站了。安德森也是对的。考虑一下给他支票吧!