我遇到了Mechanize / Ruby的问题。
当我选择第一个选项时,我无法获得第二个选择列表选项。如果我从Google中正确理解,那里就会有一些Ajax魔法。
目前我有这样的事情:
require 'rubygems'
require 'mechanize'
require 'nokogiri'
HOME_URL = 'http://www.parkers.co.uk/'
agent = Mechanize.new
page = agent.get(HOME_URL)
form = page.forms.first
form.field_with(:name => 'ctl00$contentHolder$topFullWidthContent$ctlManufacturerModelDropdownsNew$ddlManufacturer_Control').options.select.each do |manufacturer|
p manufacturer.text.strip
form.field_with(:name => 'ctl00$contentHolder$topFullWidthContent$ctlManufacturerModelDropdownsUsed$ddlModel_Control').options.each do |model|
p model.text.strip
end
end
我在控制台中输出了这个输出:
"Select a manufacturer"
"Select a model"
"Abarth"
"Select a model"
"Alfa Romeo"
"Select a model"
"Aston Martin"
"Select a model"
"Audi"
如您所见,我没有收到任何使用Mechanize的模型,例如:
“奥迪 - A4”,“奥迪 - A1”等。
我已经尝试过一些Mechanize特殊技能,例如select
,tick
,selected
,click
,present?
等等,但它并没有多大帮助。
如果您有任何想法/提示链接,请分享。
答案 0 :(得分:0)
Mechanize不支持JavaScript,并且由于模型选择框是通过JavaScript填充的,因此使用选择框不起作用。但是,如果禁用JavaScript,http://www.parkers.co.uk/
可以正常工作(尽管不同)。
在使用网站时禁用浏览器中的JavaScript,您会发现自己获得了制造商链接列表:
点击其中一个制造商链接后,您将进入填充了模型选择的新页面。