Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/joomla/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在尝试使用selenium webdriver和java处理多个浏览器窗口时获取java.util.NoSuchElementException_Java_Selenium_Selenium Webdriver_Collections - Fatal编程技术网

在尝试使用selenium webdriver和java处理多个浏览器窗口时获取java.util.NoSuchElementException

在尝试使用selenium webdriver和java处理多个浏览器窗口时获取java.util.NoSuchElementException,java,selenium,selenium-webdriver,collections,Java,Selenium,Selenium Webdriver,Collections,我正在尝试使用SeleniumWebDriver处理多个浏览器窗口,但得到了java.util.NoSuchElementException。一周前,这段代码运行良好,但现在在试图切换到第三个窗口时,代码中出现了问题 我在线上遇到的问题String Third_window=iterate.next() 注意:此代码在一周前工作正常 public class Firefox { public static WebDriver driver; public s

我正在尝试使用SeleniumWebDriver处理多个浏览器窗口,但得到了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();

        }

    }
公共类Firefox{ 公共静态WebDriver; 公共静态void main(字符串[]args)引发InterruptedException{ //TODO自动生成的方法存根 System.setProperty(“webdriver.gecko.driver”, “C:\\Users\\singhais\\Documents\\seenium\\geckodriver.exe”); 驱动程序=新的FirefoxDriver(); 驱动程序。获取(“https://www.hdfcbank.com/"); driver.manage().timeouts().implicitlyWait(10,TimeUnit.SECONDS); //第一窗口 System.out.println(“第一个窗口的GettingID”); 设置win=driver.getWindowHandles(); 迭代器iterate=win.Iterator(); String first_window=iterate.next(); System.out.println(第一个窗口); findElement(By.xpath(“//*[@id='element2']/div[1]/div[3]/div[2]/a/img”)。单击(); //第二窗口 System.out.println(“第二个窗口的GettingID”); win=驱动程序。getWindowHandles(); iterate=win.iterator(); first_window=iterate.next(); System.out.println(第一个窗口); System.out.println(driver.getTitle()); String second_window=iterate.next(); System.out.println(第二个窗口); driver.switchTo().窗口(第二个窗口); 睡眠(10000); System.out.println(driver.getTitle()); findelelement(By.xpath(“//*[@id='wrapp']/div[2]/div[3]/div[1]/div/div[2]/ul/li[1]/a”)。单击(); //第三窗口 System.out.println(“第三个窗口的GettingID”); win=驱动程序。getWindowHandles(); iterate=win.iterator(); first_window=iterate.next(); System.out.println(第一个窗口); 第二个窗口=iterate.next(); System.out.println(第二个窗口); String Third_window=iterate.next(); System.out.println(第三个窗口); driver.switchTo()窗口(第三个窗口); 睡眠(10000); System.out.println(driver.getTitle()); 睡眠(3000); driver.close(); driver.switchTo().窗口(第二个窗口); 睡眠(3000); driver.close(); driver.switchTo()窗口(第一个窗口); findElement(By.xpath(“html/body/div[1]/div[1]/div[1]/div/div[2]/ul/li[2]/a”)。单击(); 睡眠(6000); driver.close(); } }
此代码与下面给定链接中提到的问题不同。在我的问题中,我在尝试导航到最后一个窗口时没有遇到任何TouchElementException。

使用
Thread.sleep(3000)你的程序对我来说运行得很好。我只是等待3秒钟,等待下一个窗口

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

请检查并让我知道@DebanjanB可能的副本否,此问题不重复。在我的情况下,当我试图切换到最后一个窗口时,我得到了NoTouchElement异常。您能发布完整的错误控制台吗log@zsbappa,这是java.util.LinkedHashMap$LinkedHashIterator.nextNode处线程“main”java.util.NoSuchElementException中的完整控制台日志
异常(未知源代码)在java.util.LinkedHashMap$LinkedKeyIterator.next(未知源代码)在hdfcbank.Firefox.main(Firefox.java:56)
感谢@zsbapa对此的意见,但我有最新的gecko驱动程序。我的类名是Firefox.java,我想你对此感到困惑了。非常感谢,它工作得很好。你是怎么想到这个解决办法的,我是说你是怎么想的。我没有考虑过等待,因为之前它工作得很好。它发生在一切都完美工作但元素不可见的情况下。谢谢,如果你还需要什么,请随时给我打电话