我有一个功能
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'
这是显而易见的但有时仍然失败。知道怎么解决吗?
答案 0 :(得分:0)
这里可能会发生很多事情,其中一些依赖于您正在使用的驱动程序和驱动程序版本。
你实际上没有一个与'text'相匹配的字段 - 因为它有时会起作用,所以不太可能。
初始awk 'BEGIN {FS=OFS="\t"}
{col[$1]; row[$2]; val[$2,$1]=$3}
END {for(c in col) printf "%s", OFS c; print "";
for(r in row)
{printf "%s", r;
for(c in col) printf "%s", OFS val[r,c]
print ""}}' file
Category1 Category2 Category3
type1 + + +
type2 - + -
type3 + + -
缺少实际按钮。如果按钮动画显示在页面上(滑入,放大等),可能会发生这种情况,具体取决于您使用的驱动程序。您可以通过在click_button之前放置click_button 'New Source'
来判断是否发生了这种情况。如果这样可以解决问题,那么您应该考虑在测试模式下禁用动画。它将加快您的测试速度并使其更可靠。
sleep 5
正在发生,但字段显示在页面上需要很长时间(缓慢的ajax请求等)。在click_button之后放置click_button
应该已经诊断出来,但是可能需要超过5秒。 sleep 5
是一个很好的诊断方法,只要文本'Sources'只在输入可见时才会出现在页面上但文本看起来太通用了(它可能已经在当前页面上了) 。您始终可以将assert_text 'Sources'
选项传递给fill_in,这会使元素等待更长时间
fill_in'text',:with => @ source.text,等待:20
您的应用中出现间歇性错误,导致字段无法显示。通过捕获wait
,暂停应用并查看浏览器中的错误来诊断
开始 fill_in'text',:with => @ source.text,等待:20 救援Capybara :: ElementNotFound binding.pry #byebug等 - 无论你使用什么调试 端