切换场景 我的应用程序中有 3 个窗口 单击我的第一个窗口将打开,并且切换代码在这里工作正常 现在当前控件位于第二页(窗口)。在第二个窗口中还有一个按钮将打开第三个窗口。我想切换到第三个窗口,但不想关闭我的第一个或第二个窗口。当我调用该切换方法时..它不起作用 我可以切换到 3 Windows 吗...?如果我要关闭第二个窗口,则会打开第三个窗口,但这里要求我不想关闭第一个或第二个窗口
下面是我正在使用的代码
public static void switchWindow() throws InterruptedException{
window = driver.getWindowHandle();
Set<String> allWin = driver.getWindowHandles();
for (String wh : allWin)
{
driver.switchTo().window(wh);
System.out.println(driver.getTitle());
}
}
public static void backtomainWindow()
{
//driver.close();
driver.switchTo().window(window);
}
我收到异常org.openqa.selenium.NoSuchWindowException:找不到窗口。浏览器窗口可能已关闭。
最佳答案
这是您查询的解决方案 -
public static WebDriver driver;
public static String strMainWindowHandle;
public static Map<String, String> lstWindowData;
public static void main(String[] args) throws Exception {
driver = new FirefoxDriver();
driver.navigate().to("url");
strMainWindowHandle = driver.getWindowHandle();
//button 1 (on parent window - window 1)
driver.findElement(By.cssSelector("button_1")).click();
switchToLatestWindow();
//button 2 (on next window - window 2)
driver.findElement(By.cssSelector("button_2")).click();
switchToLatestWindow();
//button 3 (on next window - window 3)
//Same as above ... and so on...
//Now to switch back to parent Window
switchToParentWindow();
//All spawned windows are still open
//so if you wish to switch to a specific window "by Title"
switchToSpecificWindow("WindowTitle");
}
public static void switchToLatestWindow() throws InterruptedException{
Set<String> setAllWindows = driver.getWindowHandles();
for (String windowHandle : setAllWindows)
{
if(!windowHandle.equals(strMainWindowHandle) && !lstWindowData.containsValue(windowHandle)){
driver.switchTo().window(windowHandle);
String strTitle = driver.getTitle();
System.out.println(strTitle);
//map will be useful later...
lstWindowData.put(strTitle, windowHandle);
}
}
}
public static void switchToSpecificWindow(String strWindowTitle) throws InterruptedException {
String strRequiredHandle = lstWindowData.get(strWindowTitle);
Set<String> setAllWindows = driver.getWindowHandles();
for(String windowHandle : setAllWindows){
if(windowHandle.equals(strRequiredHandle)){
driver.switchTo().window(windowHandle);
}
}
}
public static void switchToParentWindow()
{
driver.switchTo().window(strMainWindowHandle);
}
关于java - Selenium 中切换窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33409019/