Отправка формы через элемент <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.