1

我的网站上有以下设置:

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

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

  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();
    });

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

4

1 回答 1

0

我不确定我是否完全理解您的问题,但看起来这可能与您处理异步调用的方式有关。无论如何,您根本不需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()是,只有在按下按钮触发的所有事件都已解决后才会执行。

于 2013-06-20T05:22:10.670 回答