根据我对Capybara的autowait功能的理解,它等待DOM改变,所以我猜它正在等待所有AJAX请求完成和/或主框架完成加载。
我有一个测试用例,我需要:
name_1
)当我填写name_1
字段时,我正在测试的应用程序中的一些JS会自动填写其他必填字段(特别是link_rewrite_1
)。
问题是,当我检查实际填充的其他字段时,它不是! 我认为填充其他字段的JS在测试运行时没有时间完成,并且测试没有等待,因为没有AJAX调用待处理。
以下是相关的代码段:
fill_in 'name_1', :with => 'Bob' #some javascript should run and fill link_rewrite_1
find('#link-Seo').click
page.should_not have_field('link_rewrite_1', with: "")
用简单的英语填写name_1
并期望link_rewrite_1
不要为空。
我尝试在最后一次检查之前插入sleep 1
,但它不会改变任何内容。由于睡眠将暂停整个ruby线程的执行,也许它只是冻结webkit而没有任何改变,我不知道。
我是否正确怀疑时间问题或是否可能还有其他事情发生?
答案 0 :(得分:0)
进一步调试后,似乎是驱动程序问题。 Capybara-webkit只是没有正确执行我的JS。使用selenium-webdriver可以正常工作。