如何告诉Selenium在Chrome 75的打印弹出窗口中按“取消”?

时间:2019-07-24 18:36:30

标签: java selenium selenium-webdriver selenium-chromedriver

我一直在使用来自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

3 个答案:

答案 0 :(得分:2)

在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()

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

答案 1 :(得分:1)

在Chrome 77中,“打印”对话框的html元素再次更改。 并再次在Chrome 78中进行了更改。 在我们的詹金斯上,这个版本比我笔记本电脑上的最新版本落后了几个数字,这非常令人讨厌。 (我希望他们尽快为docker容器启用该詹金斯)

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

答案 2 :(得分:0)

在打印弹出窗口之前运行此代码:

CREATE TRIGGER tblmaster_after_insert
AFTER INSERT
   ON tblmaster FOR EACH ROW
   SELECT @attempts := COUNT(*) FROM tblmaster WHERE usercode = NEW.usercode;
   UPDATE tblmaster SET attempts = @attempt + 1 WHERE id =  NEW.id;