簡體   English   中英

如何使用Java處理Selenium Webdriver中下一個選項卡中彈出的所需身份驗證?

[英]How to handle authentication required pop up in next tab in selenium webdriver using java?

在Chrome瀏覽器中,點擊某個鏈接會打開一個新標簽,其中彈出“需要身份驗證”。 如您所見,它具有“用戶名”和“密碼”以及“登錄”和“取消”按鈕。

使用Java代碼,如何在此彈出窗口中輸入值(用戶名和密碼)? 因為我找不到用戶名和密碼的定位器,所以警報方法在這里也不起作用。

在此處輸入圖片說明

我試過的代碼:

public static void switchToalert() {
    driver.switchTo().alert();
    // Selenium-WebDriver Java Code for entering Username & Password as // below: 
    driver.findElement(By.id("Username")).sendKeys("userName");
    driver.findElement(By.id("Password")).sendKeys("myPassword");
    driver.switchTo().alert().accept();
    driver.switchTo().defaultContent();
}  

謝謝戈文德

使用Selenium Webdriver處理Windows身份驗證

您可以在URL本身中提供憑據,這意味着我們將在URL中添加用戶名和密碼,因此在運行腳本時它將繞過相同

http://username:password@yourWebURL
##example##

http:
//GuravPraveen:Passwrd123@YourURL


driver.get("http://GuravPraveen:Passwrd123@www.xyz.com/signin");

我非常成功地使用的方法是設置一個嵌入式的Browsermob代理服務器(使用Java代碼)並注冊一個RequestInterceptor來攔截所有傳入的請求(與所討論的主機/ URL模式匹配)。

當您有一個本來需要基本身份驗證的請求時,請添加帶有所需憑據(“ Basic” + Base64編碼的“ user:pass”字符串 Authorization HTTP標頭。因此,請為“ foo:bar”設置值) Basic Zm9vOmJhcg==

啟動服務器,將其設置為Selenium通信的Web代理,並且在發出需要身份驗證的請求時,代理將添加標頭,瀏覽器將看到標頭,驗證憑據,而無需彈出對話框。

您根本不需要處理該對話框。 另一個好處是,由於它是純HTTP解決方案,因此在所有瀏覽器和操作系統上都可以正常工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM