2017-06-14 65 views
6

Chrome 59具有removed support for https://user:[email protected] URLsChrome 59和使用硒/ Fluentlenium的基本身份驗證

我有一個測試使用這個功能現在已經壞了,所以我試圖用一個等待驗證彈出窗口並填寫詳細信息的版本替換它。但下面不會對Chrome瀏覽器(不看AUTH彈出的警告):

alert().authenticateUsing(new UserAndPassword("test", "test")); 

唯一硒版本有同樣的問題:

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

(基於在這裏給出的答案:How to handle authentication popup with Selenium WebDriver using Java

我可以看到在FireFox中處理這個問題的幾種解決方法,但對Chrome沒有任何解決方法。有其他方法嗎?

回答

8

我敢肯定,弗洛朗B的解決方案是可行的,但對於加裝一箇舊的測試,我發現zoonabar的解決方案發布到this duplicate question比較容易實現,代碼少得多,並且不需要特別準備測試盒。對於查看代碼的新開發人員來說,它似乎也更容易遵守。

簡而言之:在訪問被測URL(沒有證書)之前訪問任何帶有憑證的URL將導致瀏覽器記住憑證。

goTo("http://user:[email protected]"); // Caches auth, but page itself is blocked 
goTo("http://localhost"); // Uses cached auth, page renders fine 
// Continue test as normal 

這可能會覺得像瀏覽器中的一個漏洞,會被修補,但我認爲這不太可能;爲避免網絡釣魚風險(其中所選用戶名看起來像域名,例如「http://google.com:[email protected]m/」)而設置了此限制,並且此設置證書的解決方法不會產生相同的風險。

See zoonabar's answer

0

結束在https://bugs.chromium.org/p/chromium/issues/detail?id=435547#c33你可以看到一個mkwst稱沒有關於基本身份驗證憑據,並同原始站點中的錯誤把它做成穩定。

如果使用「 - 禁用閃爍的特性= BlockCredentialedSubresources」或去一個版本的Chrome Canary打造你會發現,你看到原來的問題沒有發生任何更多...