我正在尝试使用Selenium WebDriver处理多个浏览器窗口,但是却遇到java.util.NoSuchElementException。一周前,此代码运行良好,但现在尝试切换到第三个窗口时,该代码出现问题。

我在网上String Third_window = iterate.next();遇到的问题

注意:该代码在一周前正常工作。

  public class Firefox {
        public static WebDriver driver;

        public static void main(String[] args) throws InterruptedException {
            // TODO Auto-generated method stub
            System.setProperty("webdriver.gecko.driver",
                    "C:\\Users\\singhais\\Documents\\Selenium Prerequisites\\geckodriver.exe");
            driver = new FirefoxDriver();
            driver.get("https://www.hdfcbank.com/");
            driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);

            // First window
            System.out.println("GettingID for first Window");
            Set<String> win = driver.getWindowHandles();
            Iterator<String> iterate = win.iterator();

            String first_window = iterate.next();
            System.out.println(first_window);
            driver.findElement(By.xpath("//*[@id='element2']/div[1]/div[3]/div[2]/a/img")).click();

            // second window
            System.out.println("GettingID for second Window");
            win = driver.getWindowHandles();
            iterate = win.iterator();

            first_window = iterate.next();
            System.out.println(first_window);
            System.out.println(driver.getTitle());
            String second_window = iterate.next();
            System.out.println(second_window);
            driver.switchTo().window(second_window);
            Thread.sleep(10000);
            System.out.println(driver.getTitle());

            driver.findElement(By.xpath("//*[@id='wrapp']/div[2]/div[3]/div[1]/div/div[2]/ul/li[1]/a")).click();

            // ThirWindow
            System.out.println("GettingID for third Window");
            win = driver.getWindowHandles();
            iterate = win.iterator();
            first_window = iterate.next();
            System.out.println(first_window);
            second_window = iterate.next();
            System.out.println(second_window);
            String Third_window = iterate.next();
            System.out.println(Third_window);
            driver.switchTo().window(Third_window);
            Thread.sleep(10000);
            System.out.println(driver.getTitle());

            Thread.sleep(3000);
            driver.close();

            driver.switchTo().window(second_window);

            Thread.sleep(3000);
            driver.close();

            driver.switchTo().window(first_window);
            driver.findElement(By.xpath("html/body/div[1]/div[1]/div[1]/div/div[2]/ul/li[2]/a")).click();

            Thread.sleep(6000);
            driver.close();

        }

    }


此代码与下面给定链接中提到的问题不重复。在我的问题中,尝试导航到上一个窗口时出现NoSuchElementException。

最佳答案

使用Thread.sleep(3000);您的程序对我来说很好用,我等待3秒钟才能获得下一个窗口

        System.out.println("GettingID for third Window");
        Thread.sleep(3000);
        win = driver.getWindowHandles();
        iterate = win.iterator();


请检查并让我知道

10-05 20:52
查看更多