2012-12-12 33 views
2

我知道这是对其他表格/ selectlist我试过。这个特定的一个似乎不是ajax。任何人都可以阐明这一点吗?Ruby机械化 - 无法获得具体的选择列表

# encoding: UTF-8 
require 'rubygems' 
require 'mechanize' 
require 'open-uri' 

agent = Mechanize.new 
page = agent.get('http://espn.go.com/nba/team/transactions/_/name/bos/boston-celtics') 

form = page.form_with(:class => "js-goto") 
fields = form.field_with(:class => "tablesm") 

puts fields 

应该返回类似#<Mechanize::Form::SelectList:0x007ffdd3930138>

+0

只是为了确认,您正在尝试更改年份? – sunnyrjuneja

+0

我试图按年浏览页面,但它甚至没有注册选择列表。这几乎是我在哪里孤立的问题 –

回答

2

那选择列表的不具有name属性,这使得它不能作为一个表单域。 您仍然可以获取导航nokogiri风格所需的数据:

page.at('select.tablesm option[text()="2008"]')[:value] 
#=> "http://espn.go.com/nba/team/transactions/_/name/bos/year/2008/boston-celtics" 
+0

好,所以如果表单字段没有'名称'属性,那么没有机械化 –

+0

机械化使用nokogiri,所以你可以使用上面的机械化生成的页面对象。 – sunnyrjuneja

+2

您仍然可以使用机械化,但不能使用机械化::表单。表单永远不会被提交,一个onchange javascript事件会被激发,所以你不能像表单那样对待那个表单。 – pguardiario