Как обрабатывать несколько всплывающих окон одновременно

мне задали вопрос, можем ли мы обрабатывать несколько всплывающих окон в веб-драйвере селена. честно говоря, я этого не знаю.

Но это правильный путь. Предположим, что мы это делаем, и у нас есть 3 всплывающих окна на нашем экране. так:

  • Получите дескрипторы (ручки окна каждого)
  • сосредоточиться на одном окне
  • закрыть окно
  • повторить то же самое и закрыть его

Пожалуйста, исправьте меня, если я ошибаюсь. Спасибо и добрый день. - СК

1 ответ

Как упоминал Файз в комментариях, ссылка на каждое окно хранится в массиве driver.window_handles.

Первый дескриптор должен быть вашим основным окном, поэтому закрытие всплывающих окон (в Ruby) может выглядеть примерно так:

driver.window_handles[1..-1].each do |handle|
 driver.switch_to.window(handle)
 driver.close
end
driver.switch_to.window(driver.window_handles.first)

Тем не менее, обработка нескольких краевых случаев, таких как предупреждения и заброшенные исключения, займет еще немного кода.

licensed under cc by-sa 3.0 with attribution.