Ruby没有突破while循环

时间:2015-05-15 17:24:36

标签: ruby phantomjs capybara poltergeist

我正试图在页面上存在特定元素的同时循环。代码运行并抓取我想要的网址,但是,当下一个按钮不再在页面上时,它不会突破循环并抛出以下错误。

/Users/someone/.rbenv/versions/2.2.0/lib/ruby/gems/2.2.0/gems/rspec-expectations-3.2.0/lib/rspec/matchers.rb:926:in `method_missing': undefined method `each' for nil:NilClass (NoMethodError)
from /something/something/something.rb:30:in `block in <top (required)>'
from /something/something/something.rb:28:in `open'
from /something/something/something.rb:29:in `<top (required)>'
from -e:1:in `load'
from -e:1:in `<main>'</code>

Ruby的全新,所以请温柔;)

require 'capybara/poltergeist'
require 'capybara/dsl'
require 'csv'
require 'rspec'

include RSpec::Matchers
include Capybara::DSL

Capybara.register_driver :poltergeist do |app|
 Capybara::Poltergeist::Driver.new(app,timeout: 60, :phantomjs_options => ['--debug=no', '--load-images=yes', '--ignore-ssl-errors=yes', '--ssl-protocol=TLSv1'], :debug => false)
end

Capybara.default_driver = :poltergeist
Capybara.javascript_driver = :poltergeist
Capybara.default_wait_time = 20
Capybara.ignore_hidden_elements = true
Capybara.current_session.driver.resize(1200, 1000)


visit('site.com')

while page.find(:xpath, 'html/body/div[4]/div[6]/div[1]/div[2]/div[2]/div[1]/div[2]/button[1]') do
   page.find(:xpath, 'html/body/div[4]/div[6]/div[1]/div[2]/div[2]/div[1]/div[2]/button[1]').click
   urls = page.all('.author-name>a').map { |a| a['href'] }.uniq
   puts urls
end
   puts urls
   f = File.open("profiles.txt", "a") do |f|
    urls.each { |element| f.puts(element) }
end

0 个答案:

没有答案