【问题标题】:Chrome alert pop up not detected in Selenium在 Selenium 中未检测到 Chrome 警报弹出
【发布时间】:2017-12-08 05:17:26
【问题描述】:

我在处理通过 Selenium 在 Chrome 中弹出的身份验证时遇到问题。

from selenium import webdriver
from selenium.webdriver.common.keys import Keys 
import time

driver = webdriver.Chrome()
driver.get('URL')
time.sleep(5)
alert = driver.switch_to_alert()
alert.send_keys('Username')
alert.send_keys(Keys.TAB)
alert.send_keys('Password')

这会返回一个错误——

“selenium.common.exceptions.NoAlertPresentException:消息:未打开警报”

另外,我也尝试了以下代码:

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time

driver = webdriver.Chrome()
driver.get('https://Username:Password@URL')

第二个代码部分工作-

在 Chrome 中,用户已登录,但页面未加载。只显示一个空白页。加载空白页面后,我只传递了 URL(没有用户凭据),它工作正常。

在 Firefox 中,网页可以完美加载。

基本上,问题出在 Chrome 上。

感谢任何帮助。

谢谢!

【问题讨论】:

标签: python-3.x google-chrome selenium basic-authentication


【解决方案1】:

您尝试的第二个代码是正确的,但有一点错误。

public void loginToSystem(String username,String password, String url){
driver = webdriver.Chrome()

driver.get("https://"+username+":"+password+"@ "+URL);
}

【讨论】:

  • 您好,感谢您的意见。您建议的代码看起来与我的没有太大不同。除了您使用变量并且我直接传递它们之外。请指出我的代码中到底有什么问题。同样在您的代码中,您是否在“@”之后给出了空格字符?当我尝试这样做时,在 https:// 之后插入 %20 的空间最终使 url 不正确。我对第二个代码的问题是网页没有正确加载。显示一个空白屏幕。作为一种临时解决方法,我在等待 5 秒后再次传递了 url,它运行良好。
【解决方案2】:

首先尝试等待警报出现。

wait = WebDriverWait(driver, 10)
wait.until(EC.alert_is_present())

如果存在警报,则仅将前进到下一步。 如果在测试用例失败时确实存在警报,请您检查屏幕截图。

【讨论】:

  • time.sleep() 提供了足够的延迟,直到弹出出现。是的,脚本失败时会出现警报。
  • 如果给出NoAlertPresentException,则表示不存在警报。
  • 您可以检查这种方法,检查元素并找到它们的 xpath 或 id 并尝试使用以下代码 element = driver.find_element_by_id('userName') element.send_keys('Username') 遵循相同密码和提交按钮的方法。希望这对你有用。
猜你喜欢
  • 2016-06-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多