我在下面有一个功能
def fill_in_sources_details
click_button 'New Source'
assert_text 'Sources'
fill_in 'text', :with => @source.text
fill_in 'url', :with => @source.url
end单击New Source后,新字段将添加到页面中。有时测试失败,因为测试没有等待新元素的添加,因此无法找到新的字段。我尝试添加assert_text 'Sources',这是显而易见的,但有时仍然失败。知道怎么修吗?
发布于 2017-05-15 16:54:46
这里可能会发生很多事情,其中有些取决于您使用的驱动程序和驱动程序版本。
click_button 'New Source'缺少实际的按钮。这可能会发生取决于您使用的驱动程序,如果按钮动画到页面(幻灯片,放大等)。您可以通过将sleep 5放在click_button前面来判断是否是这样的。如果这解决了问题,那么您应该考虑在测试模式下禁用动画。它将加快您的测试,并使他们更可靠。click_button正在发生,但字段显示在页面上需要太长时间(慢速ajax请求等)。把sleep 5放在click_button之后,应该已经诊断出来了,不过可能需要超过5秒的时间。assert_text 'Sources'是一种很好的诊断方法,只要文本“源”只有在输入可见时才会出现在页面上,但是该文本似乎过于通用(可能已经出现在当前页面上)。您可以始终将一个wait选项传递给fill_in,这将使其等待元素出现的时间更长
fill_in 'text',:with => @source.text,等待: 20ElementNotFound、暂停应用程序和查看浏览器中的错误来诊断这一点。
开始fill_in 'text',:使用=> @source.text,等待: 20援救Capybara::ElementNotFound binding.pry # byebug,等等--不管您使用的是什么调试https://stackoverflow.com/questions/43977891
复制相似问题