问题
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