与Capybara一起迭代链接阵列

时间:2014-01-06 17:09:14

标签: ruby capybara

我正在尝试截取页面菜单上找到的最后三个链接的屏幕截图。

all('.menu-left a').last(3).each do |e|
  txt = e.text
  puts txt

  e.click
  puts "clicked!"
  page.save_screenshot(txt + ".png")
  page.evaluate_script('window.history.back()')
end

不幸的是我得到了:

/usr/local/lib/ruby/gems/2.0.0/gems/capybara-webkit-1.0.0/lib/capybara/webkit/node.rb:132:in `invoke': Capybara::Webkit::NodeNotAttachedError (Capybara::Webkit::NodeNotAttachedError)
    from /usr/local/lib/ruby/gems/2.0.0/gems/capybara-webkit-1.0.0/lib/capybara/webkit/node.rb:4:in `visible_text'
    from /usr/local/lib/ruby/gems/2.0.0/gems/capybara-2.2.0/lib/capybara/node/element.rb:61:in `block in text'
    from /usr/local/lib/ruby/gems/2.0.0/gems/capybara-2.2.0/lib/capybara/node/base.rb:81:in `synchronize'
    from /usr/local/lib/ruby/gems/2.0.0/gems/capybara-2.2.0/lib/capybara/node/element.rb:57:in `text'

如何迭代链接的数组,点击它,截取屏幕截图,返回并重复?

1 个答案:

答案 0 :(得分:1)

通过单击链接(导致页面更改),对元素的引用将变为无效。

href属性保存在某处并访问它们而不是单击元素。 (如果元素是a标签)。

如果点击元素导致执行javascript代码,则需要重新评估css选择器以再次获取元素。