SpookyJS:填写表格后需要额外的

时间:2013-11-21 16:04:57

标签: node.js phantomjs casperjs spookyjs

The CasperJS Quickstart Guide在填写表单时有这个例子:

casper.start('http://google.fr/', function() {
    // search for 'casperjs' from google form
    this.fill('form[action="/search"]', { q: 'casperjs' }, true);
});

casper.then(function() {
    // aggregate results for the 'casperjs' search
    links = this.evaluate(getLinks);
    // now search for 'phantomjs' by filling the form again
    this.fill('form[action="/search"]', { q: 'phantomjs' }, true);
});

由于将true参数传递给this.fill,表单会自动提交,并且只要加载新页面就会调用下一个casper.then函数。

但是当用SpookyJS编写Cucumber测试时如此:

    spooky.start("http://www.somepage.com");

    spooky.then(function () {
      this.fill("form", {username: "foo", password: "bar"}, true);
    });

    spooky.then(function () {
      this.echo(this.getPageContent());
      this.echo(this.getCurrentUrl());
    });

通过查看页面内容和URL,我可以看出Spooky在调用spooky.then函数时仍然在表单页面上。但是,如果你再添加一个幽灵般的东西,那就像这样:

    //Empty Spooky.then call so we can do what we want on the correct page
    this.spooky.then(function () {});

    this.spooky.then(function () {
      this.echo(this.getPageContent());
      this.echo(this.getCurrentUrl());
    });

突然,这很有效。为什么这里需要额外的spooky.then调用,当使用Casper时不需要它?我在Casper中对此进行了测试,并且按预期工作,但是使用Spooky时,需要额外的then调用。

0 个答案:

没有答案