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

前端 未结 5 1818
猫巷女王i
猫巷女王i 2020-12-06 08:17

I am checking whether or not a page appears using Selenium. When I click the page, however, a printer print prompt appears (like the window that says select printer and such

5条回答
  •  予麋鹿
    予麋鹿 (楼主)
    2020-12-06 08:27

    If you are going for testing only Chrome browser here is mine solution. Because of 'Robot' class or disabling print didn't work for my case.

    // Choosing the second window which is the print dialog.
    // Switching to opened window of print dialog.
    driver.switchTo().window(driver.getWindowHandles().toArray()[1].toString());
    
    // Runs javascript code for cancelling print operation.
    // This code only executes for Chrome browsers.
    JavascriptExecutor executor = (JavascriptExecutor) driver.getWebDriver();
    executor.executeScript("document.getElementsByClassName('cancel')[0].click();");
    
    // Switches to main window after print dialog operation.
    driver.switchTo().window(driver.getWindowHandles().toArray()[0].toString());
    

    Edit: In Chrome 71 this doesn't seem to work anymore since the script can't find the Cancel button. I could make it work by changing the line to:

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

提交回复
热议问题