Кнопки отправки Ruby Mechanize работают неправильно

Я работаю над скриптом Ruby, который вводит данные в поле поиска, а затем должен нажать кнопку ввода. Глядя на «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

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

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

Как всегда, большое спасибо за вашу помощь!


person user1128637    schedule 06.03.2012    source источник


Ответы (2)


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

person user1128637    schedule 08.03.2012

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

person pguardiario    schedule 07.03.2012
comment
Я никогда не использовал ни один из этих продуктов. Позволят ли они мне ввести файл, в котором нужно искать каждую позицию? Позвольте мне объяснить, что я делаю. У меня есть файл с ~ 30 тыс. строк данных, который нужно найти. Для каждого элемента я ищу конкретные ключевые слова в результатах. Если результаты соответствуют моим критериям, необходимо вывести в файл. Я знаю, как это сделать с помощью RUBY, но, как видите, у меня немного болит голова от этого конкретного веб-сайта. Я не против изучения нового продукта, если я знаю, что могу получить конечный файл, который мне нужен для моего работодателя. Ваше здоровье! - person user1128637; 07.03.2012
comment
Я не уверен, что понимаю, что вы делаете, но я рекомендую watir::webdriver, это самый простой способ навигации по этому сайту с помощью ruby. - person pguardiario; 08.03.2012
comment
Спасибо... Я перехожу на watir! - person user1128637; 08.03.2012