我正在尝试截取页面菜单上找到的最后三个链接的屏幕截图。
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'
如何迭代链接的数组,点击它,截取屏幕截图,返回并重复?
答案 0 :(得分:1)
通过单击链接(导致页面更改),对元素的引用将变为无效。
将href
属性保存在某处并访问它们而不是单击元素。 (如果元素是a
标签)。
如果点击元素导致执行javascript代码,则需要重新评估css选择器以再次获取元素。