使用PhantomJS从文件系统打开URL

使用PhantomJS从文件系统打开URL,phantomjs,Phantomjs,在中,我可以了解如何使用http打开页面 如何使用网页模块从文件系统打开url 我试图省略http://,并在url中添加。/some_dir/foo.html,但似乎失败了 我试过这个: var page = require('webpage').create(); var fs = require('fs'); fs.changeWorkingDirectory('../foo/bar'); page.open('file://index.html', function(status)

在中,我可以了解如何使用http打开页面

如何使用网页模块从文件系统打开url

我试图省略
http://
,并在url中添加
。/some_dir/foo.html
,但似乎失败了

我试过这个:

var page = require('webpage').create();
var fs = require('fs');

fs.changeWorkingDirectory('../foo/bar');

page.open('file://index.html', function(status)
{
    console.log(status);
    //console.log(document.title);
    phantom.exit();
});
哪个输出“失败”

我得到了测试绝对路径的建议,尝试以下方法:

var page = require('webpage').create();
var fs = require('fs');

page.open('file:///absolute/path/to/index.html', function(status)
{
    console.log(page.title);
    console.log($('body').length);
    phantom.exit();
});
(无论是否调用changeWorkingDirectory,但结果相同)

我得到了一个页面标题,但phantomjs报告说,
$
未定义的
,jQuery包含在我的html文件中(太大,无法在这里发布)。它包括如下内容:

<script type="text/javascript" src="js/jquery-1.11.1.min.js"></script>

尝试运行函数也会产生如下错误

找不到变量:函数名称


您正在打开的页面/文件中是否已嵌入jquery?如果没有,则需要在页面对象上使用injectJs或includeJs,然后才能使用
$
操作符

如果您只是在做一个简单的DOM选择,我建议您直接打电话

document.querySelector('body').length

因为幻影实例中已经存在这些函数。

您是否尝试过
文件://
?您可能需要绝对路径。尝试将fs.changeWorkingDirectory与该问题一起使用,并通过输出“fail”的测试进行更新。您尝试过绝对路径吗?不是吗file://index.html 绝对路径?是的,我有一个脚本标签