如何调试水豚不点击链接?

How to debug capybara not clicking links?

我正在尝试使用 capybara 进行网页抓取。即,使其单击 link,它实际上是 span,但附加了 onclick 处理程序:

#!/usr/bin/env ruby
require 'rubygems'
require 'bundler/setup'
require 'capybara/dsl'

include Capybara::DSL
Capybara.default_driver = :poltergeist

visit 'http://example.com'
p current_url
sleep 10
first('#some-id').click
sleep 10
p current_url

但从current_url来看它失败了。现在我正在使用 poltergeist 驱动程序。当我 运行 此代码针对具有附加 onclick 处理程序的跨度的其他(测试)页面时,它起作用了。我怎样才能找出问题所在?

我做了什么。已安装 selenium-webdriver。切换到驱动程序 :selenium:

Capybara.default_driver = :selenium

并在点击 link 后添加 byebug。现在我看到单击 link 会重定向到其他站点,但还会打开新的 window。但是,capybara 报告 url 没有改变。

UPD 问题是点击 link 打开了两个新的 windows(从用户的角度来看 capybara只出现了一个 window)。这就是 capybara 报告相同 url 的原因。在 Thomas Walpole 的帮助下,我能够找到新的 url of initial window:

within_window(Capybara.current_session.windows[-2]) { p current_url }

有关选择 window 的其他方法,请参阅