Ruby Mechanize提交按钮无法正常工作

时间:2012-03-06 17:36:23

标签: ruby mechanize

我一直在研究一个Ruby脚本,它将数据输入搜索字段,然后需要单击enter按钮。通过查看“pp”,我的数据正确地输入到搜索字段中。我遇到的问题是点击“输入”按钮。正在发生的事情是它没有向前发展只是刷新当前的屏幕。当我通过IE手动访问有问题的网站时,输入搜索数据并点击键盘上的Enter键,它不会滚动到搜索屏幕;我必须在输入上单击鼠标才能使其向前移动。如果我使用Chrome并使用键盘输入相同的任务,则会打开一个新标签。如何以编程方式继续前进?

这是我的代码:

require 'rubygems'
require 'mechanize'

agent = Mechanize.new
agent.verify_mode = OpenSSL::SSL::VERIFY_NONE
page = agent.get('https://somewebsite.com')

check_form = page.form
check_form['ct100$MainContent$txtNumber'] = 'J520518'

pp page

page = agent.submit(check_form, check_form.buttons.first)

pp page

page.links.each do |link|
  puts link.text
end

这是输出中的snippit:

...
<forms
#<Mechanize::Form
<name nil>
<method "POST">
<action "">
<fields
...
[field:0xb627a0 type: name:ct100$MainContent$txtNumber value: J520518]>
...
<buttons
[submit:0xb6d8ac type: submit name: ct100$MainContent$btnEnter value: Enter]
}>}>
...
<forms
#<Mechanize::Form
<name nil>
<method "POST">
<action "">
<fields
...
[field:0xb627a0 type: name:ct100$MainContent$txtNumber value: ]>
...
<buttons
[submit:0xb6d8ac type: submit name: ct100$MainContent$btnEnter value: Enter]

一如既往,非常感谢你的帮助!

2 个答案:

答案 0 :(得分:1)

好的,我可以使用 watir 进行解析,因为我使用的是IE。然后我能够使用 nokogiri 来解析最后一页。最终,我使用上面的代码处于正确的轨道上,但 Mechanize 目前无法处理JavaScript。由于watir是浏览器的驱动程序,而不是像它自己的浏览器那样,它能够处理JavaScript。我希望这有助于任何有关此问题的人。

答案 1 :(得分:0)

像这样的Asp.net网站是一个挑战,因为所有的javascript回调。您通常可以通过使用selenium或js-aware环境(如node.js

)来保持您的理智