Кнопки отправки Ruby Mechanize работают некорректно - PullRequest
2 голосов
/ 06 марта 2012

Я работал над Ruby Script, который вводит данные в поле поиска и затем должен нажать на кнопку ввода.Глядя на «pp», мои данные правильно вводятся в поле поиска.Проблема, которую я имею, состоит в том, чтобы нажать на кнопку «войти».Происходит то, что он не движется вперед, он просто обновляет текущий экран.Когда я вручную получаю доступ к рассматриваемому веб-сайту через IE, введите данные поиска и нажмите клавишу ввода на моей клавиатуре, они не переходят на экран поиска;Я должен щелкнуть мышью по вводу, чтобы заставить его двигаться вперед.Если я использую 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

Вот фрагмент из вывода:

...
<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 ]

1 голос
/ 09 марта 2012

Хорошо, я смог разобрать, используя watir , так как я использую IE. Тогда я смог использовать nokogiri для анализа последней страницы. В конечном счете, я был на правильном пути с кодом выше, но Mechanize в настоящее время не может обрабатывать JavaScript. Поскольку watir является драйвером для браузера, а не действует как собственный браузер, он способен обрабатывать JavaScript. Я надеюсь, что это поможет любому, кто решит этот вопрос.

0 голосов
/ 07 марта 2012

Веб-сайты Asp.net, подобные этому, являются проблемой для очистки из-за обратных вызовов javascript для всего. Как правило, вы можете сохранить свое здравомыслие, используя селен или js-осведомленную среду, такую ​​как node.js

...