在我正在使用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
的值。
请告知。
答案 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');