我一直在使用建议的解决方案: https://stackoverflow.com/a/41670021/4633408
自 Chrome 71 以来,它运行良好。
executor.executeScript("document.querySelector("print-preview-app").shadowRoot.querySelector("print-preview-header").shadowRoot.querySelector("paper-button.cancel-button").click();");
但它不再有效。
有没有人想出一种方法在Chrome 75的打印预览中单击"取消"?
我抓住了异常,它只是说:
e:org.openqa.selenium.WebDriverException: unknown error: Cannot read property 'shadowRoot' of null
在版本 75.0.3770.142(官方版本((64 位(上对此进行了测试。他们现在有额外的元素
<print-preview-sidebar id="sidebar"></print-preview-sidebar>
用于在控制台中进行测试
document.querySelector("print-preview-app").shadowRoot.querySelector("print-preview-sidebar").shadowRoot.querySelector("print-preview-header").shadowRoot.querySelector("paper-button.cancel-button").click()
with executor.executeScript
executor.executeScript("document.querySelector("print-preview-app").shadowRoot.querySelector("print-preview-sidebar").shadowRoot.querySelector("print-preview-header").shadowRoot.querySelector("paper-button.cancel-button").click();")
编辑 :: 对于版本 79.0.3945.88(官方版本((64 位(
document.querySelector("print-preview-app").shadowRoot.querySelector("print-preview-sidebar").shadowRoot.querySelector("print-preview-button-strip").shadowRoot.querySelector("cr-button.cancel-button").click()
在Chrome 77中,打印对话框的html元素再次更改。并在 Chrome 78 中再次更改。在我们的 jenkins 上,版本比我笔记本电脑上的最新版本落后几个数字时,非常烦人。(我希望他们很快为 docker 容器启用 jenkins(
对于 Chrome 78.0.3904.70:
在控制台中测试:
document.querySelector("print-preview-app").shadowRoot.querySelector("print-preview-sidebar").shadowRoot.querySelector("print-preview-button-strip").shadowRoot.querySelector("cr-button.cancel-button").click()
executor.executeScript:
executor.executeScript("document.querySelector("print-preview-app").shadowRoot.querySelector("print-preview-sidebar").shadowRoot.querySelector("print-preview-button-strip").shadowRoot.querySelector("cr-button.cancel-button").click();");
在打印弹出窗口之前运行此代码:
executor.executeScript("window.print = function(){ return false;};");