【问题标题】:Having trouble AFTER form submission with zombie.js使用zombie.js提交表单后遇到问题
【发布时间】:2013-06-20 13:22:10
【问题描述】:

我的网站上有以下设置:

您在登录页面上输入凭据,然后进入第二个页面(通常不会产生屏幕输出),该页面验证用户并将他们重定向到适当的主页。

我的步骤定义包括三个步骤:

  1. 加载初始登录页面。
  2. 输入凭据并提交。
  3. 验证(通过检查页面标题)我在主页中创建了它。

我的第一步顺利通过。

我的第二步声称通过了。

我的第三步失败了。

经过审查,我发现这是因为第二步,虽然官方没有失败,但没有做它应该做的事情。僵尸卡在验证页面上。起初我以为它只是缺少重定向,但它似乎没有在验证页面上执行任何操作。我什至注释掉了整个页面,并简单地将“Hello”的输出放在页面顶部。如果我的 browser.html();可以相信,它甚至没有看到。我知道我能进入第二页,因为我有

console.log("\n" + browser.location.href);

它显示了第二页的 URL。

然后我有

console.log(browser.html());

这是空的。

我什至有一个:

browser.wait(10000,callback);

事先给它一些处理时间,但无济于事。

一些可能相关的信息:

这是一个 ColdFusion 站点。我知道僵尸正在处理 CF 的概念,因为它最初是在加载登录页面,尽管那里没有太多实际的 CF 处理。

正在发生数据库访问。如果僵尸像普通浏览器一样访问,它不应该有所作为,但它就在那里。尽管即使我将所有内容都注释掉,它仍然不起作用,所以我怀疑这实际上是否相关。

这是我用于登录步骤的脚本部分。请告知我是否以错误的方式处理此问题。


  this.When(/^I input my credentials$/, function(callback) {

    browser.fill("login", "myusername").fill("password", "mypassword");

    browser.document.forms[0].submit();

    // Put in here to account for redirect time it will take to get past validation page to actual home page

    browser.wait(10000,callback);

    callback();
    });

如果您需要任何其他信息,请告诉我。对于能够完成这项工作的任何帮助,我将不胜感激!

【问题讨论】:

    标签: forms login coldfusion zombie.js


    【解决方案1】:

    我不确定我是否完全理解您的问题,但看起来这可能与您处理异步调用的方式有关。无论如何,你根本不需要browser.wait 来处理这样的事情。尝试以下方法:

    this.When(/^I input my credentials$/, function(callback) {
        browser
            .fill("login", "myusername")
            .fill("password", "mypassword")
            .pressButton("#selectorForYourButton", function (err) {
                // Check for errors or any other behaviour this test is actually about
                callback();
            });
    });
    

    首先,pressButton 方法更可取,因为它更接近于测试实际的浏览器交互。但更重要的是,callback() 只有在按下按钮触发的所有事件都已解决后才会执行。

    【讨论】:

      猜你喜欢
      • 2012-08-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-09
      相关资源
      最近更新 更多