我尝试使用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,它可以正常工作。我怎样才能弄清楚问题是什么?
答案 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。