Java 我无法遍历到父窗口到子窗口

Java 我无法遍历到父窗口到子窗口,java,eclipse,selenium,selenium-webdriver,automation,Java,Eclipse,Selenium,Selenium Webdriver,Automation,下面是我在Selenium Eclipse中使用的代码, 但是我得到一个错误,显示在这行“String childid=it.next();” 我无法将父窗口遍历到子窗口 import java.util.Iterator; import java.util.Set; import java.util.concurrent.TimeUnit; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import o

下面是我在Selenium Eclipse中使用的代码, 但是我得到一个错误,显示在这行“String childid=it.next();” 我无法将父窗口遍历到子窗口

import java.util.Iterator;
import java.util.Set;
import java.util.concurrent.TimeUnit;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;

public class HandleMultipleWindows {

    public static void main(String[] args) {
          
    System.setProperty("webdriver.chrome.driver","C:\\Users\\vinay\\Desktop\\driver\\chromedriver.exe");

        WebDriver driver = new ChromeDriver();
        driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);
        driver.get("https://accounts.google.com/signin");

        System.out.println("Before switching");
        System.out.println(driver.getTitle());
        driver.findElement(By.xpath("//*[text()='Learn more']")).click();
        
        Set<String> ids =driver.getWindowHandles();
        Iterator<String> it = ids.iterator();
        String parentid = it.next();
        String childid = it.next();
        driver.switchTo().window(childid);
        System.out.println("After switching");
        System.out.println(driver.getTitle());
        
        driver.switchTo().window(parentid);
        System.out.println("Switch back to parent id");
        System.out.println(driver.getTitle());
        
        
    }

}
import java.util.Iterator;
导入java.util.Set;
导入java.util.concurrent.TimeUnit;
导入org.openqa.selenium.By;
导入org.openqa.selenium.WebDriver;
导入org.openqa.selenium.chrome.ChromeDriver;
公共类HandleMultipleWindows{
公共静态void main(字符串[]args){
System.setProperty(“webdriver.chrome.driver”,“C:\\Users\\vinay\\Desktop\\driver\\chromedriver.exe”);
WebDriver驱动程序=新的ChromeDriver();
driver.manage().timeouts().implicitlyWait(5,TimeUnit.SECONDS);
驱动程序。获取(“https://accounts.google.com/signin");
系统输出打印项次(“切换前”);
System.out.println(driver.getTitle());
driver.findelelement(By.xpath(“/*[text()='Learn more']”)。单击();
Set id=driver.getWindowHandles();
迭代器it=ids.Iterator();
字符串parentid=it.next();
String childid=it.next();
driver.switchTo().window(childid);
System.out.println(“切换后”);
System.out.println(driver.getTitle());
driver.switchTo().window(parentid);
System.out.println(“切换回父id”);
System.out.println(driver.getTitle());
}
}

您应该以正确的方式获取父窗口:

public static void main(String[] args) {
      
System.setProperty("webdriver.chrome.driver","C:\\Users\\vinay\\Desktop\\driver\\chromedriver.exe");

    WebDriver driver = new ChromeDriver();
    driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);
    driver.get("https://accounts.google.com/signin");

    System.out.println("Before switching");
    System.out.println(driver.getTitle());
    driver.findElement(By.xpath("//*[text()='Learn more']")).click();
    
    String parentid =driver.getWindowHandle();

    Set<String> ids =driver.getWindowHandles();
            
    Iterator<String> it= ids.iterator();
    //Here you can iterate using Iterator if you have more than one child, but once you have only one you can still use next once

    String childid =it.next();  

    driver.switchTo().window(childid);
    System.out.println("After switching");
    System.out.println(driver.getTitle());
    
    driver.switchTo().window(parentid);
    System.out.println("Switch back to parent id");
    System.out.println(driver.getTitle());
   }

 }
publicstaticvoidmain(字符串[]args){
System.setProperty(“webdriver.chrome.driver”,“C:\\Users\\vinay\\Desktop\\driver\\chromedriver.exe”);
WebDriver驱动程序=新的ChromeDriver();
driver.manage().timeouts().implicitlyWait(5,TimeUnit.SECONDS);
驱动程序。获取(“https://accounts.google.com/signin");
系统输出打印项次(“切换前”);
System.out.println(driver.getTitle());
driver.findelelement(By.xpath(“/*[text()='Learn more']”)。单击();
字符串parentid=driver.getWindowHandle();
Set id=driver.getWindowHandles();
迭代器it=ids.Iterator();
//在这里,如果您有多个子项,您可以使用迭代器进行迭代,但一旦只有一个子项,您仍然可以使用下一个子项
String childid=it.next();
driver.switchTo().window(childid);
System.out.println(“切换后”);
System.out.println(driver.getTitle());
driver.switchTo().window(parentid);
System.out.println(“切换回父id”);
System.out.println(driver.getTitle());
}
}