我正在使用硒自動化。我編碼登錄一個頁面,它工作正常。
登錄已通過,因此新的子窗口已打開,並且父窗口已關閉。無法讀取硒中的子窗口元素作爲父窗口關閉
由於我的網絡驅動程序停止並導致異常。
異常螺紋main
org.openqa.selenium.NoSuchWindowException
:
未發現窗口(警告:服務器未提供任何堆棧跟蹤信息)
請幫
我正在使用硒自動化。我編碼登錄一個頁面,它工作正常。
登錄已通過,因此新的子窗口已打開,並且父窗口已關閉。無法讀取硒中的子窗口元素作爲父窗口關閉
由於我的網絡驅動程序停止並導致異常。
異常螺紋main
org.openqa.selenium.NoSuchWindowException
:
未發現窗口(警告:服務器未提供任何堆棧跟蹤信息)
請幫
硒保持的窗口(句柄)的列表。 webdriver需要指向正確的句柄。當一個窗口關閉時,它的句柄被刪除,你的驅動程序現在將指向一個不存在的東西。
可能,您必須顯式地切換窗口,將您的驅動程序指向右窗口句柄。也許這可以幫助:
「新子窗口被打開了,結果和父窗口已關閉」
從(1)下面的代碼向您展示如何檢索窗口句柄列表,並根據其標題檢索正確的句柄。
private void handleMultipleWindows(String windowTitle) {
Set<String> windows = driver.getWindowHandles();
for (String window : windows) {
driver.switchTo().window(window);
if (driver.getTitle().contains(windowTitle)) {
return;
}
}
}
您可以使用該功能(或類似的東西)來檢索新窗口。從您提供的代碼,這將給:
// Entering the credentials in the login window.
driver.findElement(By.id(txtUserId)).clear();
driver.findElement(By.id(txtUserId)).sendKeys(poovan);
driver.findElement(By.id(txtPassword)).clear();
driver.findElement(By.id(txtPassword)).sendKeys(welcome1);
driver.findElement(By.id(btnSubmit)).click();
// Here the login window gets closed, handler to that window disappears, and driver becomes stale.
// So we need update the driver to point to the new window
handleMultipleWindows("The title of my new window");
driver.findElement(By.name(bono)).sendKeys(080);
感謝您的建議。我無法切換窗口。 線程「main」中的異常org.openqa.selenium.NoSuchWindowException:無法在關閉的窗口中找到元素(警告:服務器沒有提供任何堆棧跟蹤信息) 命令持續時間或超時:10毫秒 –
您可以給我們什麼代碼你曾經嘗試和切換窗口。更新了回覆。有一個鏈接到python文檔(這不是java,但我找到了更清晰的說明,SeleniumHQ的文檔上有什麼, –
'driver.get();' –
請使用下面的代碼。它肯定會起作用。
String parentWindow = driver.getWindowHandle();
Set<String> handles2 = driver.getWindowHandles();
for (String windowHandle : handles2) {
if (!windowHandle.equals(parentWindow)) {
driver.switchTo().window(windowHandle);
}
}
謝謝,但我的問題仍然存在 –
你能否提供一些你試圖得到這個錯誤的代碼示例? –
這種情況究竟如何?在您登錄父母后關閉,彈出新窗口或父母留下? – Saifur
我嘗試在IE8中登錄一個網頁, 並因此彈出一個新的窗口窗口。並登錄窗口關閉。 我的問題是webdriver返回null。所以我不能從子窗口中取消任何信息。 –