水豚:神秘 'element at X no longer present in the DOM'
capybara: mysterious 'element at X no longer present in the DOM'
我已经编写了用 webkit 和 firefox 驱动程序测试的 cucumber 测试场景。在 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" 时触发的例程期间。奇怪的是,大多数时候这段代码工作完美,但在一种情况下我得到了这个 'no longer present error'.
例程执行此操作:
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
谢谢,路德
您没有指出具体是哪一行产生了错误(哪一行是第 64 行),但是该错误表明您在从页面中删除某个元素后仍在使用该元素,无论是通过 JS 删除正在加载的元素或新页面。
另外 visible: true
选项真的不需要,因为它通常是 visible
选项的默认值(除非你改变了它,这在测试软件时是个糟糕的主意,如果只是抓取网站就没那么糟糕了)
此外 - capybara-webkit 1.2.0 于 2014 年 7 月发布 - 如果您正在测试任何稍微现代的东西,并且可能更新您的 ruby 到至少最新的 2.4.x 版本。
我已经编写了用 webkit 和 firefox 驱动程序测试的 cucumber 测试场景。在 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" 时触发的例程期间。奇怪的是,大多数时候这段代码工作完美,但在一种情况下我得到了这个 'no longer present error'.
例程执行此操作:
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
谢谢,路德
您没有指出具体是哪一行产生了错误(哪一行是第 64 行),但是该错误表明您在从页面中删除某个元素后仍在使用该元素,无论是通过 JS 删除正在加载的元素或新页面。
另外 visible: true
选项真的不需要,因为它通常是 visible
选项的默认值(除非你改变了它,这在测试软件时是个糟糕的主意,如果只是抓取网站就没那么糟糕了)
此外 - capybara-webkit 1.2.0 于 2014 年 7 月发布 - 如果您正在测试任何稍微现代的东西,并且可能更新您的 ruby 到至少最新的 2.4.x 版本。