2015-02-05 3 views
1

У меня есть следующие Java-файл с именем render.js:PhantomJS 2.0.0 page.open() больше не работает для локального файла

var page = require('webpage').create(), 
system = require('system'); 

page.onLoadFinished = function() { 
    console.log(page.content); 
    phantom.exit(); 
}; 

page.open(system.args[1]); 

Когда я использую PhantomJS 1.9.8 под окнами с местными html-файл Я получаю правильный вывод.

 
phantomjs.exe render.js C:\test.htm 

Когда я использую ту же команду с PhantomJS 2.0.0, я получаю пустую страницу. Может быть, ошибка в PhantomJS 2.0.0?

ответ

3

PhantomJS 2 ожидает URL-адреса, имеющие протокол, и он ошибочно идентифицирует C: как действующий протокол, например file: или http:. Поэтому вы должны использовать

page.open("file:///"+system.args[1]); 

сообщить PhantomJS, что это должен быть локальный файл.

Правильные "URL" являются:

  • file:///C:/test.htm
  • test.htm файла в той же папке

не действительны "URL" являются:

  • C:/test.htm
  • file:///test.htm файла в той же папке

Это всегда хорошая идея, чтобы проверить значение status и регистрации на события ошибок как onResourceError:

page.onResourceError = function(resourceError) { 
    console.log('Unable to load resource (#' + resourceError.id + 'URL:' + resourceError.url + ')'); 
    console.log('Error code: ' + resourceError.errorCode + '. Description: ' + resourceError.errorString); 
}; 

page.open(finish, function(status) { 
    if (status !== 'success') { 
    console.log('FAIL to load the address'); 
    phantom.exit(1); 
    } else { 
    console.log(page.content); 
    phantom.exit(); 
    } 
}); 
Смежные вопросы