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:我想你的问题比弹出窗口或表单验证更大。如果印度官员发现你在冒充他们的总理,几十年后你就看不到终点站了。安德森也是对的。考虑一下给他支票吧!