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

时间:2014-02-19 01:55:13

标签: phantomjs casperjs

我的表单中有一些需要填充的动态输入。问题是填写表单我需要访问另一个页面以获取依赖于上一页输入的数据。因此,在我获得数据然后备份到表单后,表单已经更改,因此我需要在获取数据时保持该表单处于打开状态。所以问题是如何制作它?

2 个答案:

答案 0 :(得分:0)

也许使用casper.back()和casper.forward(): https://github.com/n1k0/casperjs/blob/master/tests/suites/casper/history.js 我想你之前的表格会在上一步中保存。我希望如此,试试吧。

编辑: 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)

http://docs.casperjs.org/en/1.1-beta2/extending.html

答案 1 :(得分:0)

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

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