我的网站上有以下设置:
您在登录页面上输入凭据,然后转到第二页(通常不会产生屏幕输出),该页面会验证用户并将其重定向到相应的主页。
我的步骤定义包括三个步骤:
我的第一步是绚丽的色彩。
我的第二步声称要通过。
我的第三步失败了。
经过审查,我发现这是因为第二步,虽然官方没有失败,但没有按照预期的那样做。僵尸卡在验证页面上。起初我以为它只是缺少重定向,但似乎它没有在验证页面上执行ANYTHING。我甚至评论了整个页面,只是在页面顶部输出“Hello”。如果我的browser.html();可以相信,它甚至没有看到。我知道我已经到了第二页,因为我有
console.log("\n" + browser.location.href);
显示第二页的网址。
然后我
console.log(browser.html());
是空的。
我甚至有一个:
browser.wait(10000,callback);
事先给它一些处理时间,但无济于事。
可能相关的一些信息:
这是一个ColdFusion网站。我知道zombie正在处理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();
});
如果您需要任何其他信息,请告诉我。能够做到这一点,我将不胜感激任何帮助!
答案 0 :(得分: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()
仅在按下按钮触发的所有事件都已解决后执行。