Обработайте окно предварительного просмотра, используя селен в Chrome последней версии - PullRequest
1 голос
/ 12 июня 2019

Я пытаюсь работать с диалоговым окном печати в google chrome версии 75.0.3770.80.Я нажимаю кнопку отмены в диалоговом окне печати, используя Selenium, чтобы закрыть ее.

Print Dialog box

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

Inspecting Cancel button

Кроме того, когда я использую getSource () для этой страницы, селекторные кнопки не присутствуют в исходном кодено видимы в интерфейсе пользователя

Итак, как мы можем нажать на кнопку отмены, есть ли способ сделать это?.

1 Ответ

0 голосов
/ 12 июня 2019

Вот решение в Python. Вы можете конвертировать этот метод в Java.

def cancelPrintPreview():
    # get the current time and add 180 seconds to wait for the print preview cancel button
    endTime = time.time() + 180
    # switch to print preview window
    driver.switch_to.window(driver.window_handles[-1])
    while True:
        try:
            # get the cancel button
            cancelButton = driver.execute_script(
                "return document.querySelector('print-preview-app').shadowRoot.querySelector('#sidebar').shadowRoot.querySelector('print-preview-header#header').shadowRoot.querySelector('paper-button.cancel-button')")
            if cancelButton:
                # click on cancel
                cancelButton.click()
                # switch back to main window
                driver.switch_to.window(driver.window_handles[0])
                return True
        except:
            pass
        time.sleep(1)
        if time.time() > endTime:
            driver.switch_to.window(driver.window_handles[0])
            break

Вы можете проверить мой ответ здесь для получения дополнительной информации о работе с теневыми корневыми элементами.

...