java.util.nosuchelementexception
Согласно Java Docs из java.util.nosuchelementexception
генерируется различными методами доступа, чтобы указать, чтозапрашиваемый элемент не существует.
Теперь, если вы посмотрите на метод Java Docs из next()
, в нем явно упоминается next () метод возвращает следующий элемент в итерации или NoSuchElementException , если в итерации больше нет элементов.
Root Причина проблемы
В вашемВ случае использования основная причина java.util.nosuchelementexception
заключается в следующем:
Объяснение
До и после нажатия на элемент, обозначенный как By.xpath("//p [@class=\"_1AuloC\"and text()= \"Mobiles & Tablets\"]")
, существует только одна Дескриптор окна и String handle1
назначается с помощью Window Handle .Поскольку второй дескриптор окна не доступен String handle2 = k.next();
поднимает java.util.nosuchelementexception
.
Решение
Вам необходимо внести следующие изменения в свой собственный код:
Удалить строку кода:
String handle2 = k.next();
Удалить строку кода:
System.out.println(handle2);
Поскольку Браузер Firefox открывается в развернутом режиме, вам не нужно maximize
делать это дальше, поэтому удалите строку:
driver.manage().window().maximize();
Обновите Selenium Java Client до v3.12.0 и использование следующего свойства JVM в сочетании с GeckoDriver :
System.setProperty("webdriver.gecko.driver", "C:\\Utility\\BrowserDrivers\\geckodriver.exe");
Ваш собственный блок кода для печати дескриптора окна выглядит следующим образом:
System.setProperty("webdriver.gecko.driver", "C:\\path\\to\\geckodriver.exe");
WebDriver driver = new FirefoxDriver();
driver.get("https://www.flipkart.com/");
driver.manage().timeouts().implicitlyWait(3000, TimeUnit.SECONDS);
driver.findElement(By.xpath("// button [@class=\"_2AkmmA _29YdH8\"]")).click();
driver.findElement(By.xpath("//p [@class=\"_1AuloC\"and text()= \"Mobiles & Tablets\"]")).click();
Set<String> FlipKart = driver.getWindowHandles();
Iterator<String> k = FlipKart.iterator();
String handle1 = k.next();
System.out.println(handle1);
Вывод на консоль:
4294967297
Здесь вы можете найти подробное обсуждение Best way to keep track of Windows with Selenium in IE11?