如何从第二个 select 列表中获取选项值?

How to get option values from second select list?

我对 Mechanize/Ruby 有疑问。

当我 select 使用第一个列表选项时,我无法获得第二个 select 列表选项。如果我从 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 的模型,例如:

"Audi - A4"、"Audi - A1"、等等

我已经尝试了一些机械化的特殊技能,例如selecttickselectedclickpresent?等上,但没有太大帮助。

如果您有 ideas/tipslinks,请分享。

Mechanize 不支持 JavaScript,并且由于模型 select 盒子是通过 JavaScript 填充的,因此使用 select 盒子是行不通的。但是,如果禁用 JavaScript,http://www.parkers.co.uk/ 可以正常工作(尽管有所不同)。

在使用该站点时在浏览器中禁用 JavaScript,您会注意到您会获得制造商链接列表:

单击其中一个制造商链接后,您将进入一个新页面,其中填充了 select 型号。