首页 > 解决方案 > 在 chrome 最新版本中使用 selenium 处理打印预览窗口

问题描述

我正在尝试使用 google chrome 版本 75.0.3770.80 中的打印对话框。我正在使用 Selenium 单击打印对话框上的取消按钮来关闭它。

打印对话框

可以检查取消按钮,并且它的选择器在 UI 上可见,但是当我尝试使用 selenium 单击这些选择器时,它会给出没有此类元素异常。

检查取消按钮

此外,当我为该页面使用 getSource() 时,源代码中不存在按钮选择器,但在 UI 上可见

那么,我们如何点击取消按钮,有什么办法可以做到这一点?

标签: javaseleniumgoogle-chrome

解决方案


这是python中的解决方案。您可以将此方法转换为 java.lang.

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

您可以在此处查看我的答案,以获取有关使用 shadow-root 元素的更多信息。


推荐阅读