Я работаю над страницей, в которой есть всплывающие окна. Я хочу проверить всю доступность элементов HTML на всех всплывающих окнах. SO знать текущий номер кадра. Есть ли какой-либо метод, такой как Selenium.getFrameNumber()
или что-то еще, чтобы я мог переключиться на требуемые фреймы, используя
Selenium.switchTo().frame(0); or Selenium.switchTo().defaultContent();
В одном проекте, который я сделал, я использовал ArrayList для отслеживания окон.
List<String> windowList = new ArrayList<String>();
windowList.add( driver.getWindowHandle() );
Начальное окно всегда заполняет первую запись в списке и никогда не изменяется.
Последующие окна добавляются в END списка следующим образом:
driver.clickButtonToOpenPopup();
windowList.add( driver.getWindowHandle() );
Затем, когда всплывающее окно (или окна) или вкладка закрывается, я уменьшаю список в порядке, чем я открыл окна.
pos = windowList.size();
if ( pos > 1 && driver.closeCurrentWindow() && windowList.remove() ) {
log.info( "Closed window at position #" + pos );
} else {
log.info("There was a problem closing the window.");
}
Множество разных способов сделать это.
Если бы я снова это сделал, я мог бы использовать класс ArrayDeque.
Для этого нет опции по умолчанию, но вы можете получить это по-разному,
Сохраните список фреймов на странице,
List<WebElement> myIframes= driver.findElements(By.tagName("iframe"));
и вы можете итерации, чтобы добраться до нужного фрейма с их идентификатором.
вы можете получить общее количество нет. кадров,
myIframes.size();