CasperJS/PhantomJS如何保持旧页面打开?

CasperJS/PhantomJS如何保持旧页面打开?,phantomjs,casperjs,Phantomjs,Casperjs,我有一些需要填写的动态输入表格。问题是,要填写表单,我需要访问另一个页面,以获取依赖于上一页输入的数据。因此,在我获取数据并返回表单后,表单已经更改,因此我需要在获取数据时保持该表单处于打开状态。所以问题是如何做到这一点 可能使用casper.back()和casper.forward(): 我想您以前的表单将在上一步中保存。希望如此,请尝试 编辑: getData(newPage)是您自己的casper方法的一个示例,您可以尝试以下方法: var password ="wtoc95a"; c

我有一些需要填写的动态输入表格。问题是,要填写表单,我需要访问另一个页面,以获取依赖于上一页输入的数据。因此,在我获取数据并返回表单后,表单已经更改,因此我需要在获取数据时保持该表单处于打开状态。所以问题是如何做到这一点

可能使用casper.back()和casper.forward(): 我想您以前的表单将在上一步中保存。希望如此,请尝试

编辑: getData(newPage)是您自己的casper方法的一个示例,您可以尝试以下方法:

var password ="wtoc95a";

casper.getData = function (newPage, previousPageInputData) {
    //visit another page
    casper.open(newPage)
    //or casper.open(newPage+previousPageInputData) if the new page opened use the previous input
    .then(function() {
            //here you do what you want using "input" argument of the previous page
            //just return the data you need to fill the form
    });
    return dataNeeded;
};

And in your form : 
this.fill('form[id="signup_frm"]', { 
                nick_name: "pseudo", 
                e_mail: "mail",
                password: "password",
                password2: password,
                input : casper.getData(arg1,arg2)

您可能会创建两个casper实例。您的第一个实例将具有第一个页面,并且在需要时创建另一个实例并从中获取数据。在casper的全局范围内存储数据


等待直到变量值设置为@first instance。

没有得到整个场景。你们能提供一个例子吗?好的,你们有一个包含captcha(2+2/图像)的表单,要解决它,你们需要向脚本发送请求来完成它。表单打开时如何发送和获取请求?不。在使用casper.back()之后;另一种形式出现。我使用casper.back();两次。嗯,这只是重复了一个老步骤。如果您试图调用自己的casper方法来获取数据并返回它。在您的场景中,当您填写表单时,调用casper.getData(newPage)来填写表单。我已经编辑过,但我认为您尝试过:“第二,我将第二个实例放入函数中,并在需要时启动它”。我尝试了几种方法来创建第二个实例。首先,我尝试立即创建两个实例,CasperJS/PhantomJS只处理最后一个实例,而忽略第一个实例。其次,我将第二个实例放入函数中,并在需要时启动它,结果=不工作。你能给我举个工作例子吗