如何测试window.print()是否未被覆盖?

时间:2012-09-26 13:28:03

标签: javascript selenium webdriver selenium-firefoxdriver

如何使用(JavaScript和/或)FirefoxDriver测试window.print()方法是否被覆盖?

可以禁用页面上的所有打印按钮,如下所示:

window.print = function() { alert("Bazinga") }

通过以下方式,正常的“打印”链接不再起作用了:

<a onclick="window.print()">....</a>

我需要检查window.print()调用是否执行原始打印对话框。

也许可以在FirefoxWebdriver中注入一些JavaScript吗?

2 个答案:

答案 0 :(得分:3)

由于window.print是本机函数,您可以:

if( window.print.toString().indexOf('[native code]') > -1 ) {
 //native
}

答案 1 :(得分:2)

我根据Luca的回答和Christoph的评论创建了fiddle。即使在IE6中,此功能也将检测本机打印对话框。

function isNativePrint() {
    var isNative = false;
    try {
        if (window.print.toString().indexOf('[native code]') > -1) isNative = true;
    } catch (e) {
        isNative = true;
    }
    return isNative;
}