一尘不染

如何告诉Selenium在打印弹出窗口上按“取消”?

selenium

我正在检查是否使用Selenium出现页面。但是,当我单击页面时,会出现打印机打印提示(如显示选择打印机等的窗口)。Selenium如何通过单击“取消”来关闭此窗口?

我尝试查找警报,但由于打印窗口是系统提示,因此似乎无法使用。它无法识别出现的任何警报。

我尝试使用的最新方法是仅发送选项卡(如tab)并输入,以选择取消按钮,但是,它无法识别出任何按键被按下。

我该如何处理?

public static boolean printButton() throws Exception {

    WebDriver driver = new FirefoxDriver();
    driver.get("website");


    try {

        Thread.sleep(3000);
        WebElement temp = driver.findElement(By.xpath("//*[@id='block-print-ui-print-links']/div/span/a"));
        temp.click();
        Actions action = new Actions(driver); 
        action.sendKeys(Keys.TAB).sendKeys(Keys.ENTER);

        Thread.sleep(6000);

     }

     catch (Exception e) {

        System.out.println("No button.");
        driver.close();
        return false;

     }

阅读 596

收藏
2020-06-26

共1个答案

一尘不染

我只是通过覆盖print方法来禁用打印对话框:

((JavascriptExecutor)driver).executeScript("window.print=function(){};");

但是,如果您的目标是测试是否调用了打印,则:

// get the print button
WebElement print_button = driver.findElement(By.cssSelector("..."));

// click on the print button and wait for print to be called
driver.manage().timeouts().setScriptTimeout(20, TimeUnit.SECONDS);
((JavascriptExecutor)driver).executeAsyncScript(
    "var callback = arguments[1];" +
    "window.print = function(){callback();};" +
    "arguments[0].click();"
    , print_button);
2020-06-26