【问题标题】:Ruby Mechanize change <select> value that is not in a formRuby Mechanize 更改不在表单中的 <select> 值
【发布时间】:2014-11-09 01:50:41
【问题描述】:

我必须使用 Mechanize 抓取一个根本不包含表单标签的页面。这个页面只有一些带有 Javascript 的 select 标签绑定到 onChange 事件。我需要更改这些选择并触发 onChange 事件才能读取页面上显示的内容。

既然 Mechanize 需要在访问字段之前有一个表单对象,我就注定了......当页面中没有表单时,有没有办法访问字段并更改值???

非常感谢!

赛尔奇

【问题讨论】:

  • 您可以在没有表单的情况下访问该字段,但这对您没有任何好处,因为 mechanize 不会对 javascript 事件做任何事情。
  • 哦,好吧,您的意思是,即使我设法更改了 select 上的值,onChange 事件也不会触发?所以我可能会改用 selenium 之类的东西??
  • 好的,我已经用 Watir 完成了!感谢 pguardiaro 的提示

标签: ruby web-crawler mechanize


【解决方案1】:

我做了一个简单的脚本,它使用 Watir 从没有表单的页面中提取数据:

require 'watir-webdriver'
require 'selenium-webdriver'

b = Watir::Browser.new 
b.goto 'http://www.sitexcom/data.asp'

b.select_list(:id => 'select1').select_value "1"
sleep 2
b.select_list(:id => 'select2').select_value "1"
sleep 2
b.select_list(:id => 'select3').select_value "1"
sleep 4

data = b.table(:id => 'data_table_id')

data.rows.each do |row|
    row.cells.each do |cell|
        puts cell.text
    end
end

【讨论】:

    猜你喜欢
    • 2021-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多