【问题标题】:Filling out calendar with Mechanize?用机械化填写日历?
【发布时间】:2014-02-25 20:58:50
【问题描述】:

我想填写 www.vegas.com/lasvegastraveldeals 的日历日期字段。

到目前为止,我似乎无法让 value 方法工作。这是我的代码:

require 'mechanize'

agent = Mechanize.new
page = agent.get('http://www.vegas.com/lasvegastraveldeals/')
vegas_form = page.form('gs')
vegas_form.q = 'DFW'
departure = vegas_form.field_with(:id => 'departureDatec12')
departure.value = "05/16/2014"
pp page

我收到此错误:

vegas_scraper.rb:9:in `<main>': undefined method `value=' for nil:NilClass (NoMethodError)

有什么建议吗?

【问题讨论】:

  • 该 id 在运行时使用 JS 填充。因此,我认为 mechanize 无法找到它。
  • 你需要使用watir/selenium..
  • 这不是 Nokogiri 问题。

标签: ruby mechanize mechanize-ruby


【解决方案1】:

如果字段名称是 departureDate,那么这应该可以:

form['departureDate'] = '05/16/2014'

【讨论】:

    【解决方案2】:

    您没有找到 ID 为 departureDatec12 的输入。根据页面的源代码,它是departureDate2。所以试试这个

    departure = vegas_form.field_with(:id => 'departureDate2')
    

    【讨论】:

    • 我试过了。。还是不行。您是否使用更改运行了代码?
    • 如果你做page view source,你不会找到id
    • 为什么不呢?我可以看到出发输入。 input type="text" autocomplete="off" value="02/25/2014" name="departureDate" id="departureDate2" ...
    • 正在查看页面源或使用检查元素
    • 使用开发者工具检查元素。
    猜你喜欢
    • 2013-01-21
    • 1970-01-01
    • 2017-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多