Селен: Как узнать номер или значение текущего кадра?

1

Я работаю над страницей, в которой есть всплывающие окна. Я хочу проверить всю доступность элементов HTML на всех всплывающих окнах. SO знать текущий номер кадра. Есть ли какой-либо метод, такой как Selenium.getFrameNumber() или что-то еще, чтобы я мог переключиться на требуемые фреймы, используя

Selenium.switchTo().frame(0);   or Selenium.switchTo().defaultContent();
Теги:
testing
selenium
selenium-webdriver
frame

2 ответа

2
Лучший ответ

В одном проекте, который я сделал, я использовал 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.

3

Для этого нет опции по умолчанию, но вы можете получить это по-разному,

Сохраните список фреймов на странице,

List<WebElement> myIframes= driver.findElements(By.tagName("iframe"));

и вы можете итерации, чтобы добраться до нужного фрейма с их идентификатором.

вы можете получить общее количество нет. кадров,

myIframes.size();

Ещё вопросы

Сообщество Overcoder
Наверх
Меню