我已经编写了使用webkit和firefox驱动程序测试的黄瓜测试场景。在firefox中,测试全部通过,但是使用webkit,其中一个失败并出现错误
Element at 40 no longer present in the DOM (Capybara::Webkit::NodeNotAttachedError)
/home/r/project/share/support/actions.rb:64:in `block (2 levels) in follow_link_in_new_tab'
/home/r/project/duplo/share/support/actions.rb:10:in `with_scope'................
这发生在执行由测试步骤触发的例程期间'当我按照" Linkname"。奇怪的是,大多数时候这段代码都很完美,但在一种情况下,我得到了这个'不再出现错误'。
例程执行此操作:
res = find( 'a', text: text, visible: true)
if ((res[:target] || '') == '_blank')
@win = window_opened_by { res.click }
else
res.click
end
我发现如果我将其更改为
find( 'a', text: text, visible: true).click
消息消失,方案通过测试。谁能帮助我理解这里可能出现的问题。为什么在将查找结果分配给变量时失败,为什么它只在少数情况下失败?
我使用ruby 2.4.0和capybara-webkit 1.2.0
谢谢,Ruud
答案 0 :(得分:0)
您没有准确指出哪一行产生错误(哪一行是第64行),但是错误表明您在从页面中删除元素之后仍然使用元素,或者通过JS删除元素或者正在加载新页面。
此外,实际上不需要visible: true
选项,因为这通常是visible
选项的默认值(除非你改变了它,这在测试软件时是个糟糕的主意,而不是如果只是刮网站就不好了)
另外 - 2014年7月发布了capybara-webkit 1.2.0 - 你真的想要更新到最新版本,如果你正在测试任何甚至是现代的东西,并且可能更新你的红宝石至少是最新的2.4.x发布。