在URL中嵌入凭据无法与Selenium和Chrome一起使用

时间:2019-03-11 16:26:32

标签: java selenium authentication selenium-webdriver

我正在使用硒对正在开发的UI进行自动化测试,由于身份验证,我一直试图访问该网站。我看到您可以验证将凭据嵌入URL之类的“ http://admin:admin@blah.com”,但是我尝试将Selenium驱动程序用作driver.get(“ http://admin:admin@blah.com”),但它不起作用,并且弹出窗口是仍然出现。我也尝试使用Alert作为driver.switchTo()。alert()来捕获该弹出窗口,但它说没有警报。我什至包括一个等待警报的网络,在浏览器中我可以清楚地看到弹出窗口在那里,但无济于事。我什至尝试使用Java Robot编写凭据,但是没有用,因为我们在无头环境中运行它,并且Robot抛出异常。

我看到您可以使用第三方软件,例如AutoIT或Sikuli,但我只是想知道是否可以使用硒驱动程序进行这种类型的身份验证?

在此先感谢您的帮助!

编辑1:

好吧,感谢Taylor的建议,我通过添加处理警报的代码设法使它在Firefox浏览器上运行:

Alert alert=driver.switchTo().alert();
alert.sendKeys(user+Keys.TAB+pass+Keys.TAB);
alert.accept();
driver.switchTo().defaultContent();

使用该代码,我设法发送了用于验证的用户名和密码,但对于chrome,它不起作用。我尝试在几个站点上进行研究,但对每个人有用的唯一答案是将凭据嵌入URL中,而如上所述对我不起作用。 Selenium can't accept alert by google chrome [java]是一个类似的链接,但我不想忽略该警报,因为我需要在此处输入凭据。任何其他帮助将不胜感激!

1 个答案:

答案 0 :(得分:0)

因此,根据我的阅读,我认为问题出在chrome驱动程序本身,因为它实际上无法识别警报存在,但firefox驱动程序可以。通过我一直在看的东西,一个驱动程序支持某些功能,而另一个驱动程序支持其他功能,例如,您可以从chrome获取浏览器日志,但不能从firefox获取日志,可以从firefox获取警报,但不能使用chrome。

我为此找到了转机。将凭据嵌入URL无效,因为凭据本身不是针对我正在测试的页面,而是针对REST API调用的页面需要身份验证。一旦弄清楚了,我现在就使用驱动程序进行两次调用:第一个调用是在REST调用的URL中嵌入了凭据,因此页面得以缓存和重用。第二个是页面本身,该页面现在没有警报加载。

希望这对其他人有帮助!