【问题标题】:Zombie.js Button not enablingZombie.js 按钮未启用
【发布时间】:2013-07-22 19:50:38
【问题描述】:

目前我正在尝试使用zombie.js 为我的网站运行自动化测试。现在我正在努力使一个人注册自动化。对于注册,一个表单与 3 个不同的 div 一起使用,看起来像这样

页面代码:

<form>
   <div id=step1>
   <div id=step2>
   <div id=step3> 
</form> 
...
...
<button id="nextStep" class="btn btn-primary" role="button" 
   onClick="signupNext()">Cnt. </button>

SignupNext 是一个 javascript 函数,它禁用按钮,然后是一些简单的事情 然后重新启用按钮。

僵尸代码:

browser
   .visit(https://example.com, function(){
     browser.fill(....)
     browser.fill(....)
     browser.pressButton('#nextStep', function(){
        browser.fill(...)
        browser.fill(...)
        browser.pressButton('#nextStep', function(){ //THIS LINE Errors
            ...
            ...
        });
     });
   })

Zombie 在第二个 .pressButton 上抛出错误“按钮已禁用”。就我对zombiejs 的理解而言,在我看来,pressButton 应该等待事件完成然后执行回调函数。

*zombiejs 新手

【问题讨论】:

    标签: html testing zombie.js


    【解决方案1】:

    一切都是异步发生的 来自文档:

    浏览器将加载文档,如果文档包含任何脚本,也会加载并执行这些脚本。然后会处理 一些事件,例如,您的脚本在页面加载时所做的任何事情。全部 其中,就像真正的浏览器一样,异步发生。

    要等待页面完全加载并处理事件,请通过访问 一个回调函数。 Zombie 然后会用 null 调用你的回调, 浏览器对象、最后响应的状态码和一个数组 错误(希望是空的)。这是 JavaScript,所以你不需要 声明所有这些参数,实际上可以访问它们 browser.statusCode 和 browser.errors。

    (为什么第一个回调参数为空?当 使用 Mocha 等异步测试框架

    Zombie 也支持承诺。当你调用访问之类的函数时, 等待或 clickLink 没有回调,你会得到一个承诺。之后 浏览器已完成处理,它要么履行承诺,要么拒绝承诺。

    例如:

    browser.visit("http://localhost:3000/").
      then(function() {
        assert.equal(browser.text("H1"), "Deferred zombies");
      }).
      fail(function(error) {
        console.log("Oops", error);
      });
    

    【讨论】:

    • 使用 Promise API Zombie 提供的事件流与使用回调完全相同,但语法更简洁。这不应改变当前中断的任何内容。
    【解决方案2】:

    这可能是由于您检查输入以启用/禁用此按钮的方式。 我猜您可能正在使用 keyupblur 或同时使用这两种事件。 当zombie为您填充这些输入时,它不会触发这些事件,因为当真实用户使用实际浏览器填充它时,您必须使用zombie来触发您需要的任何事件,就在输入之后填满,像这样:

    browser.fill(...);
    browser.fill(...);
    browser.fire("{checkedInputSelector}", "keyup", function(){
        browser.pressButton('#nextStep', function(){ //THIS LINE shouldn't error anymore
            ...
            ...
        });
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-01-15
      • 1970-01-01
      • 2013-08-01
      • 2013-02-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多