【问题标题】:I am not able to traverse to parent window to child window我无法遍历父窗口到子窗口
【发布时间】:2021-07-28 18:49:57
【问题描述】:

我在 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());
        
        
    }

}

【问题讨论】:

    标签: java eclipse selenium selenium-webdriver automation


    【解决方案1】:

    你应该以正确的方式获得父窗口:

    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());
       }
    
     }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多