我有一个安全的URL的问题盒:处理“需要验证”警报与Python 2.7 +硒的webdriver
打开URL创建包含用户名和密码字段的“需要验证”的警告框。
我是Selenium Webdriver和Python的新手。我不熟悉处理警报,我目前手动输入凭据,直到我能弄明白为止。 我已经尝试将我的用户名/密码添加到URL中。这对我不起作用。
可能有人请指出我在alertbox进入键进入用户名和密码字段的方向是什么?
我有一个安全的URL的问题盒:处理“需要验证”警报与Python 2.7 +硒的webdriver
打开URL创建包含用户名和密码字段的“需要验证”的警告框。
我是Selenium Webdriver和Python的新手。我不熟悉处理警报,我目前手动输入凭据,直到我能弄明白为止。 我已经尝试将我的用户名/密码添加到URL中。这对我不起作用。
可能有人请指出我在alertbox进入键进入用户名和密码字段的方向是什么?
感谢所有的回复。不幸的是,这些解决方案都不适合我。我怀疑这可能与每次由webdriver打开Firefox时创建新配置文件有关。
我的解决方法: 我改变了司机从火狐IE浏览器,安装32位IE的驱动程序(http://selenium-release.storage.googleapis.com/index.html?path=2.44/)之后。这解决了我的问题,不再创建alertbox,并让我继续我的单元测试。
之后的密码。我的密码有一个@符号,所以这也是我的解决方案。更不用说,用纯文本密码获取http可能会被嗅探到 – gh4x 2017-01-25 19:31:55
您可以尝试在报警中使用Keys选项卡吗?
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.alert import Alert
from selenium.webdriver.support.ui import WebDriverWait as wait
from selenium.webdriver.support import expected_conditions as EC
driver = webdriver.Firefox()
driver.get('http://www.url.com/')
wait(driver, 5).until(EC.alert_is_present())
alert = driver.switch_to_alert()
alert.send_keys('username')
alert.send_keys(Keys.TAB)
alert.send_keys('password')
alert.accept()
该行: 'driver.get('http://www.url.com/')' 将会有效阻止,此方法将无法工作。 – PythonTester 2015-03-11 12:02:30
使用串联字符串修复了我的问题:'alert.send_keys('username'+ Keys.TAB +'password')' – 2017-07-18 10:23:52
在这样的认证的情况下,需要通过用户名和密码,服务器在访问网页,以避免验证窗口(这是出于硒够不到的地方)
假设你正在尝试访问的网址是:http://example.com
你有凭据访问此网址类似如下:
driver.get('http://username:[email protected]')
其中username
是您的用户名,password
是您网站的密码。
我有完全相同的问题,因为你,直到我发现,我只是忘了写:“HTTPS”,而不仅仅是HTTP。如果你添加's',对我来说就是这样!
所以在代码也许你也想尝试:
driver.get('https://username:[email protected]')
我在这里添加我的用户名/密码,进入网址为我没有工作,类似的问题。这是因为Firefox提醒我一个确认框,要求我确认我想用提供的用户名登录该网站。下面解决了这个问题:
from selenium import webdriver
driver = webdriver.Firefox()
driver.get('https://<username>:<password>@<site-needing-auth>.com')
alert = driver.switch_to_alert()
alert.accept()
你能提供一个警报截图吗? – Saifur 2014-12-05 19:43:33
从你的开发人员那里找出它使用的是什么形式的认证。在URL *中传递用户名:密码*应该适用于大多数情况,除非语法错误。 – SiKing 2014-12-05 21:25:13