使用Python 2.7 + Selenium Webdriver处理"需要身份验证"警告框

Edw*_*win 10 python selenium selenium-webdriver

我遇到安全网址问题:

打开URL会创建一个"需要身份验证"警告框,其中包含用户名和密码字段.

我是Selenium Webdriver和Python的新手.我不熟悉处理警报,目前我手动输入凭据,直到我弄明白这一点.我已经尝试将我的用户名/密码添加到URL中.这对我不起作用.

有人可以指点我在警告框中输入密钥到用户名和密码字段的方向吗?

TDH*_*DHM 6

在这种身份验证的情况下,您需要在访问页面时将用户名和密码传递给服务器以避免身份验证窗口(这是 selenium 无法实现的)

假设您尝试访问的网址是:http : //example.com

您必须使用以下凭据访问此网址:

driver.get('http://username:password@example.com')
Run Code Online (Sandbox Code Playgroud)

username您的用户名和password密码在哪里。

  • 我已经使用 Chrome 驱动程序对此进行了测试,但页面未加载。 (2认同)

小智 5

您可以尝试使用“ 密钥”在警报中切换吗?

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()
Run Code Online (Sandbox Code Playgroud)

  • 使用串联的字符串解决了我这方面的问题:`alert.send_keys('username'+ Keys.TAB +'password')` (4认同)
  • 行: 'driver.get('http://www.url.com/')' 将有效阻止,此方法将不起作用。 (2认同)

Edw*_*win 2

感谢您的所有回复。不幸的是,这些解决方案都不适合我。我怀疑这可能与每次 webdriver 打开 Firefox 时创建新配置文件有关。

我的解决方法:安装 32 位 IE 驱动程序(http://selenium-release.storage.googleapis.com/index.html?path=2.44/)后,我将驱动程序从 Firefox 更改为 IE。这解决了我的问题,不再创建警报框,并允许我继续进行单元测试。