如何在量角器测试中关闭打印窗口对话框

时间:2017-08-29 12:50:17

标签: javascript jquery angular protractor

我正在使用量角器进行端到端测试。在某个测试中,我需要像打印按钮一样测试是否创建pdf。因此,当测试点击按钮时,它会打开如下所示的打印窗口对话框。

enter image description here

现在这个测试无法完成。因为这个打印窗口。我的问题是如何在量角器中关闭此打印对话框?正因为如此,其余的测试变得悬而未决。请帮忙。提前谢谢。

修改

我试过这样的事情..

var printButton=element(by.css('[class="print"]'));
        /* This print button should be present first*/
        expect(printButton.isPresent()).toBe(true);

        browser.actions().mouseMove(printButton).perform();
        printButton.click().then(function () {
             // fill in the form here
             browser.sleep(2000);
            // For Pressing Escape key
            browser.actions().sendKeys(protractor.Key.ESC).perform();

        });

我想如果我成功按下退出键,那么它将解决问题。但没有成功。

下一页编辑 - 我尝试了新的Windows更改,如下所示

printButton.click().then(function () {
             // fill in the form here

            browser.sleep(4000);
            browser.getAllWindowHandles().then(function(handles){
                browser.switchTo().window(handles[1]).then(function(){
                    //do your stuff on the pop up window

                    browser.driver.close();
                    browser.switchTo().window(handles[0]);
                });
            });

        });

但它在控制台中显示错误,实际上它没有打开任何窗口。并且像以前一样挂在打印对话框上。

 Failed: unknown error: failed to close window in 20 seconds

编辑3

我在角度js中遇到这个问题而不是java。

编辑4我的最后一次尝试

printButton.click().then(function () {
             // fill in the form here
            return browser.getAllWindowHandles().then(function (handles) {
                var newWindowHandle = handles[1]; // this is your new window
                return browser.switchTo().window(newWindowHandle).then(function () {
                    return browser.sleep(5000).then(function () {
                        return browser.actions().sendKeys(protractor.Key.ESCAPE).perform().then(function () {
                            return browser.switchTo().window(handles[0])
                        });
                    });
                });
            });

但它没有打开一个新的标签,用于在同一个标​​签页中打印Dialog..open打印对话框。

2 个答案:

答案 0 :(得分:0)

您需要将转义发送到右侧窗口。在发送之前还要等待窗口打开。您可能还需要切换回句柄[0]。

return browser.getAllWindowHandles().then(function (handles) {
    var newWindowHandle = handles[1]; // this is your new window
    return browser.switchTo().window(newWindowHandle).then(function () {
        return browser.sleep(5000).then(function () {
            return browser.actions().sendKeys(protractor.Key.ESCAPE).perform().then(function () {
                return browser.switchTo().window(handles[0])
            });
        });
    });
});

答案 1 :(得分:0)

设置如下功能;这将禁用从Chrome浏览器弹出的打印预览

功能:{     ' browserName':' chrome',     chromeOptions:{       args:[' - 禁用 - 打印预览','启动最大化']     }

},