How can I tell Selenium to press cancel on a print popup in Chrome 75?

房东的猫 提交于 2019-12-29 09:59:51

问题


I have been using the the suggested solution from : https://stackoverflow.com/a/41670021/4633408

And it worked perfectly since Chrome 71.

executor.executeScript("document.querySelector(\"print-preview-app\").shadowRoot.querySelector(\"print-preview-header\").shadowRoot.querySelector(\"paper-button.cancel-button\").click();");

But it no longer works.

Has anyone figured out a way to click, "Cancel" in the print preview for Chrome 75?

I caught the exception and it simply says:

 e:org.openqa.selenium.WebDriverException: unknown error: Cannot read property 'shadowRoot' of null

回答1:


Tested this on Version 75.0.3770.142 (Official Build) (64-bit) .They have additional element now

<print-preview-sidebar id="sidebar"></print-preview-sidebar>

For testing in console

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();")



回答2:


In Chrome 77 the html elements of print dialog have changed again. And changed again in Chrome 78. Very annoying when on our jenkins the version is a few numbers behind the latest on my laptop. (I hope they soon enable that jenkins for docker containers)

For Chrome 78.0.3904.70:

testing in console:

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();");



回答3:


Running this code before print popup :

executor.executeScript("window.print = function(){ return false;};");


来源:https://stackoverflow.com/questions/57189281/how-can-i-tell-selenium-to-press-cancel-on-a-print-popup-in-chrome-75

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!