彈出是Windows HTTP驗證彈出窗口並不能使用Selenium Webdriver進行處理。您將不得不使用機器人類或 AutoIT來處理它。
1.使用機器人類:
Alert authenticationWindow = driver.switchTo().alert();
// Type the username/email.
authenticationWindow.sendKeys("<username/email address>");
// Shift cursor focus to password input text field.
Robot robot = new Robot();
robot.keyPress(KeyEvent.VK_TAB);
// Type the password in password field. [ Selenium does not know at this point that the cursor focus is shifted, so calling Alert class instance sendKeys() will cause password to be typed in username field. So, we are copying the password first to windows clipboard and then pasting it directly into the password field using Robot class instance ]
StringSelection stringSelection = new StringSelection("<user password>");
Toolkit.getDefaultToolkit().getSystemClipboard().setContents(stringSelection,null); robot.keyPress(KeyEvent.VK_CONTROL);
robot.keyPress(KeyEvent.VK_V);
robot.keyRelease(KeyEvent.VK_CONTROL);
// Accept the authentication window.
robot.keyPress(KeyEvent.VK_ENTER);
2.使用的AutoIt:
此鏈接提供了有關如何使用了AutoIt非常久遠硒良好的信息:http://www.toolsqa.com/selenium-webdriver/autoit-selenium-webdriver/
這裏你必須做什麼:
D ownload /安裝的AutoIt
您將能夠使用的AutoIt賽特編輯 編譯.au3腳本會給你一個.exe文件 然後你就可以使用調用您的硒腳本.exe文件創建.au3腳本
Runtime.getRuntime().exec("D:\AutoIt\AutoItTest.exe");
你可以使用的AutoIt窗口信息(86)或(64)一個窗口的屬性。例如,窗口的標題/狀態欄。
AutoIT也有Au3記錄器,以便您可以記錄與遠程桌面相關的操作。
下面是自動進行HTTP認證的示例腳本:
WinWaitActive("Web page title","","10")
If WinExists("Web page title") Then
Send("userid{TAB}")
Send("password{Enter}")
EndIf
3.使用AutoITx4Java:
檢查這個庫AutoITx4Java - https://code.google.com/p/autoitx4java/
- 下載雅各布的AutoIt(參考上面的鏈接)
- 添加jacob.jar和aut oitx4java.jar添加到你的庫路徑。
- 將jacob-1.15-M4-x64.dll文件放入庫路徑中。
示例代碼
File file = new File("lib", "jacob-1.15-M4-x64.dll"); //path to the jacob dll
System.setProperty(LibraryLoader.JACOB_DLL_PATH, file.getAbsolutePath());
AutoItX x = new AutoItX();
String notepad = "Untitled - Notepad";
String testString = "this is a test.";
x.run("notepad.exe");
x.winActivate(notepad);
x.winWaitActive(notepad);
x.send(testString);
Assert.assertTrue(x.winExists(notepad, testString));
x.winClose(notepad, testString);
x.winWaitActive("Notepad");
x.send("{ALT}n");
Assert.assertFalse(x.winExists(notepad, testString));
號@LittlePanda,硒會登錄我。 –
沒有我完整的代碼:打家庭網址 - >登錄到aws控制檯通過給用戶/傳遞 - >點擊一個對象 - > nasvigate到其他頁面 - >拍快照 - >關閉瀏覽器。所有這一切都發生在所有瀏覽器上。 –
問題在哪裏? – LittlePanda