我在模式对话框中有一些输入字段,如下所示(这是jade):
.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但是我得到一个错误提示:“没有匹配‘event-planner-email’的输入”。如果有人知道如何做到这一点,我们将不胜感激。谢谢!
发布于 2012-09-22 01:29:49
也许当你的回调被触发时,模式还没有进入你的视线。如果在显示模式时发生了转换,则必须等待该转换完成。
也许可以尝试在clickLink的回调中添加一个setTimeout
browser.clickLink 'a#open-planner', ->
fillForm = ->
browser
.fill('event-planner-email', someEmail)
.fill('event-planner-name', someName)
.pressButton 'Create', ->
do done
setTimeout fillForm, 1000发布于 2012-09-22 01:34:19
从Bootstrap docs
您需要在模式加载之后运行您的僵尸代码,因此您应该使用"shown“事件
$('#myModal').on('shown', function () {
// zombie
})我不知道如何在咖啡中表现出来。
发布于 2012-09-22 01:53:55
谢谢大家,事实证明我只是没有为输入元素使用正确的css选择器,所以不是
.fill('event-planner-email', someEmail)应该是
.fill('input#event-planner-email', someEmail)因为在上面的jade代码片段中,'event-planner-email‘是input元素的id。我想删除我的问题,这样我就不会进一步暴露我的愚蠢,但显然为时已晚。
https://stackoverflow.com/questions/12534474
复制相似问题