正しいウィンドウに切り替えていることを確認してください
理由 1 : 正しいウィンドウに切り替えていることを確認してください
以下に示すように、必要なウィンドウに切り替えるユーティリティメソッドがあります
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;
}
}
ウィンドウのタイトルがパラメーターとして渡されると、目的のウィンドウに移動します。あなたの場合、あなたはすることができます。
Webdriver childDriver = Utility.getHandleToWindow("titleOfChildWindow");
同じ方法を使用して親ウィンドウに再度切り替えます
Webdriver parentDriver = Utility.getHandleToWindow("titleOfParentWindow");
この方法は、複数のウィンドウを扱う場合に効果的です
Resaon 2 : 要素を待つ
WebdriverWait wait = new WebdriverWait(driver,7000);
wait.until(ExpectedConditions.visbilityOfElementLocatedBy(By.name("nameofElement")));
理由 3 : 要素がフレーム内にあるかどうかを確認する前のフレームに切り替える場合
driver.switchTo.frame("frameName");
それが機能するかどうかを教えてください..