I am trying to open a local HTML-file with PhantomJS (version 1.9.2):
var page = require('webpage').create(), fs = require('fs'), address = "/Full/Path/To/test.html"; console.log('isFile? ' + fs.isFile(address)); console.log('isReadable? ' + fs.isReadable(address)); page.open(address, function(status){ console.log('status? ' + status); console.log(page.content) phantom.exit(); }); First I check if I got the right path and if the file is readable using fs.isFile() & fs.isReadable(). Then I check whether phantomjs succeeded in opening the file (with status). Independent of the actual contents of the file I always get:
isFile? true isReadable? true status? fail <html><head></head><body></body></html> So the file and the path seem to be okay – but PhantomJS fails to open it! Any suggestions?
PhantomJS can open local files without any problems. The url have to follow classic Url/Uri rules, especially for a local file.
/Full/Path/To/test.html is not valid for PhantomJS. Is it a local file or a web resource?
Depending of the path, just try with something like this:
file:///C:/Full/Path/To/test.html or if it's hosted in a web server:
http://localhost/Full/Path/To/test.html
An addition to @Cybermaxs answer: If you need to convert a simple relative path test.html to a proper URL, you can do so by something like this:
var fs = require('fs'); function getFileUrl(str) { var pathName = fs.absolute(str).replace(/\\/g, '/'); // Windows drive letter must be prefixed with a slash if (pathName[0] !== "/") { pathName = "/" + pathName; } return encodeURI("file://" + pathName); }; var fileUrl = getFileUrl("test.html"); Note that you can't use a solution based on file-url because it is based on path and process, which do not work within PhantomJS. Fortunately, the fs module provides similar functionality.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With