Chrome 59和Selenium/Fluentlenium的基本身份验证

Dav*_*ave 8 java selenium google-chrome fluentlenium

Chrome 59已取消对https:// user:password@example.com网址的支持.

我有一个使用此功能的测试现已破坏,因此我尝试将其替换为等待身份验证弹出窗口并填写详细信息的版本.但以下内容在Chrome上不起作用(它没有将auth弹出窗口视为警报):

alert().authenticateUsing(new UserAndPassword("test", "test"));
Run Code Online (Sandbox Code Playgroud)

仅限硒的版本具有相同的问题:

WebDriverWait wait = new WebDriverWait(getDriver(), 10);      
Alert alert = wait.until(ExpectedConditions.alertIsPresent());     
alert.authenticateUsing(new UserAndPassword("test", "test"));
Run Code Online (Sandbox Code Playgroud)

(基于此处给出的答案:如何使用Java处理Selenium WebDriver的身份验证弹出窗口)

我可以看到在FireFox中处理此问题的几种解决方法,但Chrome没有.有没有替代方法?

Dav*_*ave 10

我确信Florent B的解决方案是可行的,但是为了改进旧的测试,我发现zoonabar的解决方案发布到这个重复的问题更容易实现,代码少得多,并且不需要对测试盒进行特殊准备.对于查看代码的新开发人员来说,似乎也更容易理解.

简而言之:在访问受测试的URL(没有凭据)之前访问具有凭据的任何URL将导致浏览器记住凭据.

goTo("http://user:password@localhost"); // Caches auth, but page itself is blocked
goTo("http://localhost"); // Uses cached auth, page renders fine
// Continue test as normal
Run Code Online (Sandbox Code Playgroud)

这可能感觉浏览器中的漏洞会被修补,但我认为这不太可能; 已经施加限制以避免网络钓鱼风险(选择的用户名看起来像域名,例如" http://google.com:long-token-here-which-makes-the-real-domain-disappear@example.com / "),这种设置凭据的解决方法不会带来同样的风险.

见zoonabar的答案


归档时间:

查看次数:

9572 次

最近记录:

7 年,1 月 前