Отправка формы через элемент <a> с помощью Ruby Mechanize

У меня есть набор страниц, которые я пытаюсь очистить с помощью Mechanize в Ruby. На некоторых страницах они перенаправляют на страницу, которая требует, чтобы я заполнил форму списка выбора и затем отправил ее. Проблема в кнопке, которая отправляет форму, которая является <a> элемент. Это выглядит так:

<a class="css_class" href="#" onclick="RunSomeScript; return false;">
  <span>
    Enter
  </span>
</a>

Волшебство, кажется, происходит с RunSomeScript сценарий; это вещь, которая, кажется, обходит страницу перенаправления и переносит меня на страницу с данными, которые я пытаюсь очистить. К сожалению, я не могу понять, как правильно отправить форму с помощью Mechanize. Я попытался с помощью метода Mechanize # click на <a> элемент, передавая в <a>"s href приписывают это, но это, похоже, тоже не сработало. Как правильно автоматизировать клик по этой ссылке (т. Е. Отправку формы) и / или запустить RunSomeScript скрипт для отправки формы на эту страницу перенаправления?

2 ответа

Решение

Я думаю, что вы можете найти форму и отправить ее с помощью Mechanize, т.е.

# if condition checks if the form exists with the id the add some fields to it and then submit    
if page.search("#ctl00_ContentPlaceHolder1_ctrlResults_gvResults_ctl01_lbNext").count > 0
              form = page.forms.first
              form.add_field! "__EVENTTARGET", "ctl00$ContentPlaceHolder1$ctrlResults$gvResults$ctl01$lbNext"
              form.add_field! "__EVENTARGUMENT", ""
              page = form.submit

В вашем случае вы можете найти форму, используя какой-либо идентификатор или просто использовать

form = page.forms.first  
# do whatever you want with this form and then 
page = form.submit

Я не знаю, можете ли вы заставить механизировать поддержку javascript, но я вижу другие проекты, на которые вы могли бы обратить внимание:

Capybara, используя драйвер или watir poltergeist (phantomjs), возможно, также использует поддержку phantomjs.

Другие вопросы по тегам