Javascript 如何使用PhantomJS连续多次访问页面?

Javascript 如何使用PhantomJS连续多次访问页面?,javascript,phantomjs,Javascript,Phantomjs,是否可以打开页面,做我的事情,然后关闭它。在超时之后,再次访问它以查看内容更改(页面有许多js函数)。尝试连续两次打开页面会使PhantomJ行为不可预测。那么解决方案是什么呢?大多数PhantomJS中的执行是异步的,因此只有在第一次页面加载完成后才能打开页面: page.open(url, function(){ setTimeout(function(){ // do something page.open(url, function(){

是否可以打开页面,做我的事情,然后关闭它。在超时之后,再次访问它以查看内容更改(页面有许多js函数)。尝试连续两次打开页面会使PhantomJ行为不可预测。那么解决方案是什么呢?

大多数PhantomJS中的执行是异步的,因此只有在第一次页面加载完成后才能打开页面:

page.open(url, function(){
    setTimeout(function(){
        // do something
        page.open(url, function(){
            setTimeout(function(){
                // do something
                phantom.exit();
            }, 5000); // 5 seconds
        });
    }, 5000); // 5 seconds
});
或者更好地使用递归:

var i = 0;
function run(){
    if (i > 100) { // stop execution at some point
        phantom.exit();
    }
    page.open(url, function(){
        // do what you have to do
        setTimeout(run, 5000); // run again in 5 seconds
    });
}
run();

page.open(url,函数(状态){page.evaluate(函数(){//执行某些操作1});setTimeout(函数(){page.evaluate(函数(){button=document.getElementById(“button”);button.click();});page.render(“2.png”);var fs=require('fs');fs.write(result,page.content,'w');console.log('Finished');phantom.exit();},timeout);});你更新的代码与标题、你的问题和我的答案无关。如果你还有问题,你应该问一个新问题。我回滚了你的编辑。你的代码也只有一个
页面。打开
语句。哦,很抱歉,我今天搞错了。它实际上不起作用。我的程序有两个步骤。首先,我提交表单,然后我发送原始post请求。我尝试了setTimeout变量,但是第二个page.open()从未开始。所以我不知道该怎么办。那太糟糕了。正如我之前所说,这个问题与这个问题无关。你可以问一个新问题,当这个新问题解决后,你可以应用我在回答中提出的技巧。