Ich habe eine Hilfsmethode auf die gewünschten Fenster zu wechseln, wie unten
public class Utility
{
public static WebDriver getHandleToWindow(String title){
//parentWindowHandle = WebDriverInitialize.getDriver().getWindowHandle(); // save the current window handle.
WebDriver popup = null;
Set<String> windowIterator = WebDriverInitialize.getDriver().getWindowHandles();
System.err.println("No of windows : " + windowIterator.size());
for (String s : windowIterator) {
String windowHandle = s;
popup = WebDriverInitialize.getDriver().switchTo().window(windowHandle);
System.out.println("Window Title : " + popup.getTitle());
System.out.println("Window Url : " + popup.getCurrentUrl());
if (popup.getTitle().equals(title)){
System.out.println("Selected Window Title : " + popup.getTitle());
return popup;
}
}
System.out.println("Window Title :" + popup.getTitle());
System.out.println();
return popup;
}
}
Es Ihnen gewünschte Fenster nimmt gezeigt einmal Titel des Fensters als Parameter übergeben wird. In Ihrem Fall können Sie tun.
Webdriver childDriver = Utility.getHandleToWindow("titleOfChildWindow");
und wechseln Sie dann wieder zu übergeordneten Fenstern mit der gleichen Methode
Webdriver parentDriver = Utility.getHandleToWindow("titleOfParentWindow");
Diese Methode effektiv funktioniert, wenn mit mehreren Fenstern zu tun.
Jetzt kann ich die Werte in das Textfeld des neuen Fensters nicht über meinen Code eingeben.String parentHandle = driver.getWindowHandle(); \t \t \t driver.findElement (By.id ("ImageButton5")). Click(); für (String winHandle: driver.getWindowHandles()) { \t \t driver.switchTo(). Window (winHandle); \t \t \t \t \t \t Gewinde.Schlaf (3000); \t \t \t driver.findElement (By.id ("txtEnterCptCode")). SendKeys ("99219"); driver.findElement (By.id ("chklstAllprocedure_0")). Click(); Der Fehler, den ich bekam, ist, das Textboxelement im neu geöffneten Fenster nicht zu finden. Kannst du mir dabei helfen? –
@Arun Kumar: Vielleicht versucht WebDriver, das Element zu finden, bevor die Seite vollständig geladen ist? Thead.sleep ist nicht effektiv, da es nur einige Sekunden wartet, bevor die nächsten Codezeilen ausgeführt werden. Versuchen Sie die WebDriverWait-Klasse.:::: WebDriverWait wait = neuer WebDriverWait (Treiber, 1000); WebElement-Element = wait.until (Erwartete Bedingungen.visibilityOfElementLocated (By.id ("txtEnterCptCode"))); element.sendKeys ("99219"); – CODEBLACK
WebDriverWait wird warten, bis das angegebene Element sichtbar ist ... und sobald es sichtbar wird, wird es weiterhin den Code ausführen ... – CODEBLACK