Ruby on rails rails机械化。单击未定义的方法“单击';为了#
我在rails中创建了一个mechanize任务。这很简单Ruby on rails rails机械化。单击未定义的方法“单击';为了#,ruby-on-rails,mechanize,Ruby On Rails,Mechanize,我在rails中创建了一个mechanize任务。这很简单 task :estimateone => :environment do require 'mechanize' mechanize = Mechanize.new page = mechanize.get('https://www.theurbanlist.com/brisbane/a-list/50-brisbane-cafes-you-should-have-eaten-breakfast-at') pag
task :estimateone => :environment do
require 'mechanize'
mechanize = Mechanize.new
page = mechanize.get('https://www.theurbanlist.com/brisbane/a-list/50-brisbane-cafes-you-should-have-eaten-breakfast-at')
page.css('ol li a').each do |link|
link.click
end
end
但是我犯了这个错误,我做错了什么
rake aborted!
NoMethodError: undefined method `click' for #<Nokogiri::XML::Element:0x00007ffb4b281830>
/Users/jeremybray/RubymineProjects/OpportunityFinder/lib/tasks/getlead.rake:8:in `block (2 levels) in <top (required)>'
/Users/jeremybray/.rvm/gems/ruby-2.4.2/gems/nokogiri-1.8.4/lib/nokogiri/xml/node_set.rb:204:in `block in each'
/Users/jeremybray/.rvm/gems/ruby-2.4.2/gems/nokogiri-1.8.4/lib/nokogiri/xml/node_set.rb:203:in `upto'
/Users/jeremybray/.rvm/gems/ruby-2.4.2/gems/nokogiri-1.8.4/lib/nokogiri/xml/node_set.rb:203:in `each'
/Users/jeremybray/RubymineProjects/OpportunityFinder/lib/tasks/getlead.rake:7:in `block in <top (required)>'
/Users/jeremybray/.rvm/gems/ruby-2.4.2@global/gems/rake-12.3.1/exe/rake:27:in `<top (required)>'
/Users/jeremybray/.rvm/gems/ruby-2.4.2/bin/ruby_executable_hooks:15:in `eval'
/Users/jeremybray/.rvm/gems/ruby-2.4.2/bin/ruby_executable_hooks:15:in `<main>'
rake中止!
NoMethodError:未定义的方法“单击”用于#
/Users/jeremybray/RubymineProjects/OpportunityFinder/lib/tasks/getlead.rake:8:in'block(2层)in'
/Users/jeremybray/.rvm/gems/ruby-2.4.2/gems/nokogiri-1.8.4/lib/nokogiri/xml/node_set.rb:204:in`block in each'
/Users/jeremybray/.rvm/gems/ruby-2.4.2/gems/nokogiri-1.8.4/lib/nokogiri/xml/node_set.rb:203:in'upto'
/Users/jeremybray/.rvm/gems/ruby-2.4.2/gems/nokogiri-1.8.4/lib/nokogiri/xml/node_set.rb:203:in“each”
/Users/jeremybray/RubymineProjects/OpportunityFinder/lib/tasks/getlead.rake:7:in'block in'
/Users/jeremybray/.rvm/gems/ruby-2.4。2@global/gems/rake-12.3.1/exe/rake:27:in`'
/Users/jeremybray/.rvm/gems/ruby-2.4.2/bin/ruby\u executable\u hooks:15:in'eval'
/Users/jeremybray/.rvm/gems/ruby-2.4.2/bin/ruby\u executable\u hooks:15:in`'
由于点击是一种机械化方法,您应该使用它的实例作为点击方法的接收者,而不是链接,这是Nokogiri方法
状态为,它接收元素,单击它并返回获取的页面
尝试:
-- snip --
page.css('ol li a').each do |link|
mechanize.click(link)
end
Page#带有
的链接将返回链接,css将返回html元素:
page.links_with(css: 'ol li a').each do |link|
link.click
end
还有,有这么多不同的文档,谢谢分享