使用chrome最新版本中的硒处理打印预览窗口

时间:2019-06-12 12:29:03

标签: java selenium google-chrome

我正在尝试使用谷歌浏览器Chrome 75.0.3770.80中的“打印对话框”。 我正在使用硒关闭打印对话框上的取消按钮。

Print Dialog box

可以检查“取消”按钮,并且其选择器在UI上可见,但是当我尝试使用硒单击那些选择器时,没有此类元素异常。

Inspecting Cancel button

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

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

2 个答案:

答案 0 :(得分:0)

这是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

您可以查看我的答案here,以获得有关使用阴影根元素的更多信息。

答案 1 :(得分:0)

答案太多,方法太复杂。这是一个更好的选择:

您在这里要做的基本上是获取触发打印弹出窗口/对话框并将其分配给空函数的默认JavaScript函数:

window.print = "function(){};"

以上是在Python中的处理方式。尝试将其翻译成Java。