在尝试使用selenium webdriver和java处理多个浏览器窗口时获取java.util.NoSuchElementException
我正在尝试使用SeleniumWebDriver处理多个浏览器窗口,但得到了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
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,我想你对此感到困惑了。非常感谢,它工作得很好。你是怎么想到这个解决办法的,我是说你是怎么想的。我没有考虑过等待,因为之前它工作得很好。它发生在一切都完美工作但元素不可见的情况下。谢谢,如果你还需要什么,请随时给我打电话