使用CasperJS进行测试时,navigator.onLine始终为FALSE

时间:2013-06-19 11:16:44

标签: javascript phantomjs casperjs

在我正在使用CasperJS测试的应用程序中,我们正在检查navigator.onLine是否为false,以便在没有互联网连接时停用应用程序的某些部分。问题是,在使用CasperJS进行测试时,navigator.onLine似乎总是为false。当我实际上线时,我希望navigator.onLine成立。

我在casper.start(url, function(){...}中添加了一项检查navigator.onLine的值的测试,它总是会导致'OFF LINE'消息:

this.evaluateOrDie(function() {
    return navigator.onLine;
}, 'OFF LINE');

我搜索了控制此行为的选项,但只找到localToRemoteUrlAccessEnabled。我已将其设置为true,但它没有帮助。

无法覆盖navigator.onLine的值。

请告知。

1 个答案:

答案 0 :(得分:1)

原来它是PhantomJS bug。值得庆幸的是,看起来你可以覆盖整个navigator对象来绕过这个错误:

this.evaluateOrDie(function() {
    var fakeNavigator = {};
    for (var i in navigator) {
        fakeNavigator[i] = navigator[i];
    }
    fakeNavigator.onLine = true;
    navigator = fakeNavigator;

    return window.navigator.onLine;
}, 'OFF LINE');
相关问题