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

时间:2017-01-11 21:51:33

标签: ruby web-scraping capybara poltergeist

我尝试使用capybara进行网页抓取。也就是说,点击链接,实际上是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处理程序的span,它可以正常工作。我怎样才能弄清楚问题是什么?

1 个答案:

答案 0 :(得分:0)

我做了什么。已安装selenium-webdriver。切换到司机:selenium

Capybara.default_driver = :selenium

点击链接后添加byebug。现在我看到点击链接会重定向到其他网站,但也会打开新窗口。但是,capybara报告网址没有变化。

UPD 问题在于点击链接打开了两个新窗口(就capybara而言,从用户的角度来看,只出现了一个窗口)。这就是capybara报告相同网址的原因。在Thomas Walpole的帮助下,我能够进入初始窗口的新网址:

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

有关选择窗口的其他方法,请参阅this comment