Rails,水豚 - 水豚有时找不到添加的 html 元素
Rails, Capybara - capybara cannot find added html elements sometimes
我下面有一个函数
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
后,页面中添加了新字段。有时测试会失败,因为测试没有等待添加新元素,因此无法找到 Capybara 的新字段。我尝试添加 assert_text 'Sources'
这很明显,但有时仍然会失败。知道如何解决吗?
这里可能会发生很多事情,其中一些取决于您使用的驱动程序和驱动程序版本。
您实际上没有匹配的字段 'text' - 这不太可能,因为它有时会起作用。
初始 click_button 'New Source'
缺少实际按钮。如果按钮在页面上显示动画(滑入、放大等),则可能会发生这种情况,具体取决于您使用的驱动程序。您可以通过在 click_button 之前放置 sleep 5
来判断是否发生了这种情况。如果这解决了问题,那么您应该考虑在测试模式下禁用动画。它将加快您的测试并使它们更可靠。
click_button
正在发生,但字段显示在页面上的时间太长(慢 ajax 请求等)。将 sleep 5
放在 click_button 之后应该可以诊断出这一点,但可能需要超过 5 秒的时间。 assert_text 'Sources'
是一个很好的诊断尝试,只要文本 'Sources' 仅在输入可见时出现在页面上,但该文本似乎太通用了(它可能在当前页面上)已经)。您始终可以将 wait
选项传递给 fill_in,这将使其等待元素出现的时间更长
fill_in 'text', :with => @source.text, 等待: 20
您的应用中出现间歇性错误,导致字段无法显示。通过捕获 ElementNotFound
、暂停应用程序并查看浏览器中的错误来诊断
开始
fill_in 'text', :with => @source.text, 等待:20
营救 Capybara::ElementNotFound
binding.pry # byebug 等 - 无论您使用什么调试
结束
我下面有一个函数
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
后,页面中添加了新字段。有时测试会失败,因为测试没有等待添加新元素,因此无法找到 Capybara 的新字段。我尝试添加 assert_text 'Sources'
这很明显,但有时仍然会失败。知道如何解决吗?
这里可能会发生很多事情,其中一些取决于您使用的驱动程序和驱动程序版本。
您实际上没有匹配的字段 'text' - 这不太可能,因为它有时会起作用。
初始
click_button 'New Source'
缺少实际按钮。如果按钮在页面上显示动画(滑入、放大等),则可能会发生这种情况,具体取决于您使用的驱动程序。您可以通过在 click_button 之前放置sleep 5
来判断是否发生了这种情况。如果这解决了问题,那么您应该考虑在测试模式下禁用动画。它将加快您的测试并使它们更可靠。click_button
正在发生,但字段显示在页面上的时间太长(慢 ajax 请求等)。将sleep 5
放在 click_button 之后应该可以诊断出这一点,但可能需要超过 5 秒的时间。assert_text 'Sources'
是一个很好的诊断尝试,只要文本 'Sources' 仅在输入可见时出现在页面上,但该文本似乎太通用了(它可能在当前页面上)已经)。您始终可以将wait
选项传递给 fill_in,这将使其等待元素出现的时间更长fill_in 'text', :with => @source.text, 等待: 20
您的应用中出现间歇性错误,导致字段无法显示。通过捕获
ElementNotFound
、暂停应用程序并查看浏览器中的错误来诊断开始 fill_in 'text', :with => @source.text, 等待:20 营救 Capybara::ElementNotFound binding.pry # byebug 等 - 无论您使用什么调试 结束