Как выбрать окно в безголовом режиме?

#python #selenium #google-chrome #selenium-chromedriver #robotframework

#python #selenium #google-chrome #selenium-chromedriver #robotframework

Вопрос:

Я хочу проверить, появилось ли всплывающее окно печати с использованием Robot Framework.

 Test Print Popup Appeared
    Click Element    class:print_button
    Get Window Handles    # 2 windows in normal mode, 1 window in headless
    Select Window    NEW
    Page Should Contain Element    //button[@class='print default']
    Click Element    class:cancel
    Select Window    MAIN
  

Если я не использую безголовый режим, тест в порядке.
Но в безголовом режиме это не удается.

СБОЙ: окно с последним индексом совпадает с текущим окном.

Есть ли какая-либо возможность работать с всплывающими окнами в безголовом режиме? Спасибо.


UPD. Как я вижу, серфинг по этой проблеме Chrome отключает всплывающие окна в безголовом режиме. Та же проблема возникает, когда я пытаюсь загрузить файлы: нормально в обычном режиме, СБОЙ в безголовом.

Я попытался запустить браузер с пользовательской опцией disable-popup-blocking , но безуспешно, проблема остается.

 Test Suit Setup
    ${options} =    Evaluate    sys.modules['selenium.webdriver'].ChromeOptions()    sys,selenium.webdriver
    Call Method    ${options}    add_argument    headless
    Call Method    ${options}    add_argument    disable-popup-blocking
    Create WebDriver    Chrome    chrome_options=${options}
  

Комментарии:

1. Можете ли вы Get Window Handles раньше Click Element class:cancel . Это дает представление о том, сколько окон существует.

2. Помните, что при запуске в безголовом режиме это может быть быстрее, поэтому окно еще не готово. Попробуйте добавить задержку, чтобы увидеть, так ли это.

3. @supputuri Когда в обычном режиме открыто 2 окна: главное и всплывающее окно для печати. Когда в безголовом — только одно главное окно

4. @Helio Спасибо. На самом деле есть некоторая задержка, так что это не так

5. Прохладный. Всегда лучше использовать Get Window Handles , когда вы используете Headless, по крайней мере, сколько окон существует на момент, когда вы пытаетесь переключиться.