使用zombie.js测试模态对话框

时间:2012-09-21 16:31:14

标签: coffeescript pug zombie.js

我在模态对话框中有一些输入字段,如此(那是玉):

      .modal-body
            .control-group
                label.required(for="event-planner-email")= Email
                .input
                    input#event-planner-email(name="email", type='text')

            .control-group
                label.required(for="event-planner-name")= Name
                .input
                    input#event-planner-name(name="name", type='text')

我希望能够在测试中填写它们。我尝试按下打开模态的链接并使用zombie.js浏览器对象填充字段,咖啡中的代码如下:

          browser.clickLink 'a#open-planner', () ->
                browser
                    .fill('event-planner-email', someEmail)
                    .fill('event-planner-name', someName)
                    .pressButton 'Create', () ->
                         do done

但我收到一条错误消息:“没有INPUT匹配'event-planner-email'”。如果有人知道如何做到这一点,将非常感谢帮助。谢谢!

3 个答案:

答案 0 :(得分:0)

当你的回叫开始时,也许还没有看到模态。如果发生转换以显示模态,则必须等待该转换完成。

也许可以尝试在setTimeout的回调中添加clickLink

browser.clickLink 'a#open-planner', ->
    fillForm = ->
        browser
            .fill('event-planner-email', someEmail)
            .fill('event-planner-name', someName)
            .pressButton 'Create', ->
                 do done

    setTimeout fillForm, 1000

答案 1 :(得分:0)

来自Bootstrap docs

你需要在模态加载后运行你的僵尸代码,所以你应该使用“显示”事件

$('#myModal').on('shown', function () {
  // zombie
})

我不确定如何在咖啡中代表

答案 2 :(得分:0)

谢谢大家,原来我只是没有为输入元素使用正确的css选择器,所以代替

                .fill('event-planner-email', someEmail)

应该是

                .fill('input#event-planner-email', someEmail)

因为在上面的jade片段中,'event-planner-email'是输入元素的id。想要删除我的问题,这样我就不会再进一步​​暴露我的愚蠢,但显然已经太晚了。