【发布时间】:2017-02-23 05:17:44
【问题描述】:
我的目标是使用以下方法执行 PhantomJS:
// adding $op and $er for debugging purposes
exec('phantomjs script.js', $op, $er);
print_r($op);
echo $er;
然后在script.js里面,我打算用多个page.open()来截取不同页面的截图比如:
var url = 'some dynamic url goes here';
page = require('webpage').create();
page.open(url, function (status) {
console.log('opening page 1');
page.render('./slide1.png');
});
page = require('webpage').create();
page.open(url, function (status) {
console.log('opening page 2');
page.render('./slide2.png');
});
page = require('webpage').create();
page.open(url, function (status) {
console.log('opening page 3');
page.render('./slide3.png');
phantom.exit(); //<-- Exiting phantomJS only after opening all 3 pages
});
在运行exec 时,我在页面上得到以下输出:
Array ( [0] => opening page 3 ) 0
结果我只得到了第三页的截图。我不确定为什么 PhantomJS 会跳过第一和第二块代码(从丢失的 console.log() 消息中可以看出,应该从第一块和第二块输出)并且只执行第三块代码。
【问题讨论】:
-
我找到了这个github.com/ariya/phantomjs/blob/master/examples/… 但我希望以一种简单的方式实现它,就像我目前使用的那样。
-
是的,但从你的问题 这不是很清楚你在哪里遇到了障碍。您基本上只写“它不起作用”并且您“认为它应该以某种方式起作用”。可以说是很形象了。因此,即使是可能知道这一点的人也可能无法以知道有答案的方式解读您的问题。代码示例添加了良好的上下文,但您还应该指出您希望使用代码示例的确切内容。
-
用一些调试信息更新了我的问题
-
你有没有仔细检查过三个函数中的前两个都执行了?
-
不
console.log证明前两个函数没有运行?我还尝试通过注释掉其他两个代码来仅运行第一个代码并且效果很好。
标签: javascript phantomjs