我正在使用Selenium的免费代理,除了代理需要身份验证的情况外,一切正常。在这种情况下,浏览器会显示登录弹出窗口,但由于它是需要身份验证的代理服务器,因此处理警报的标准方法似乎不起作用。
目前我的代码如下所示:
driver = webdriver.Chrome(chromedriver_path)
try:
driver.switch_to.alert.dismiss()
raise ProxyFailed
except NoAlertPresentException:
pass
driver.get(url)
try:
driver.switch_to.alert.dismiss()
raise ProxyFailed
except NoAlertPresentException:
pass
当代理服务器需要身份验证时,我只想关闭该对话框,因为我没有任何凭据
问题是,对话框似乎阻止driver.get
调用并等待用户输入(第一个try
块执行,但程序永远不会到达第二个)。
我不能只从列表中删除这些有问题的代理,因为代理收集也是自动化的,并且每次程序启动时都会发生
通过互联网搜索,我只找到了处理登录弹出窗口的switch_to.alert
方法。
或者,有没有办法在Chrome中禁用弹出窗口,因此它只显示401
错误页面而不等待用户输入?
我在Linux上使用Python 2.7,但该软件也应在Windows上运行。
编辑:这是我正在谈论的对话:
dialog screenshot
该文本转换为:
登录
代理服务器[服务器地址]需要用户名和密码 您与本网站的连接不是私密的 用户名[输入]
密码[输入]
[登录] [取消]
我需要点击Selenium的取消按钮。