Selenium WebDriver - 从子窗口切换回父窗口时挂起或停留。如果我改变特定页面 in 父窗口手动打开调试模式,成功从子窗口切换到父窗口。猜测父窗口中的特定页面会阻止窗口切换,因为它期望子窗口关闭。我怎样才能克服这个问题?(将控制权带回父窗口以进行进一步验证)(还建议是否有任何替代方法可用于切换视窗)
代码:(使用正确的代码)
String parentWin = browser.getWindowHandle();
Set<String> handles = browser.getWindowHandles();
String winHandle = null;
Iterator<String> itr = handles.iterator();while(itr.hasNext())
{
winHandle = itr.next();
if (!winHandle.equals(parentWin)) {
browser.switchTo().window(winHandle); //Tried Giving Enough delay also
browser.switchTo().window(parentWin);// It hungs here (Executes at
// the case if change the
// specific page in parent
// window)
}
}
问题
根据您的代码试验,您将首先执行打开子窗口的操作。接下来,您尝试将父窗口句柄存储为String parentWin = browser.getWindowHandle();
。但是到那时,子窗口已启动,因此子窗口句柄被存储在parentWin
。因此WebDriver稍后无法切换到真正的父窗口。
解决方案
在执行打开子窗口的操作之前,将父窗口的窗口句柄存储在字符串中。这是代码的工作集:
String parentWin = browser.getWindowHandle();
//perform the action/click which opens a child window
//Now create the Set
Set<String> handles = browser.getWindowHandles();
//Create iterator to traverse
Iterator<String> itr = handles.iterator();
//create a while loop if there are multiple window handles
while(i1.hasNext())
{
//Store the Child window handle
String child_window = i1.next();
//Check if parent window handle not equals child window handle
if (!parentWin.equalsIgnoreCase(child_window))
{
//child window present, so switch to child
driver.switchTo().window(child_window);
//Do your work here on child window
//switch back to parent window
browser.switchTo().window(parentWin );
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)