我有一组我试图用Ruby中的机械化刮擦的页面。在某些页面上,它们重定向到希望我填写精选列表的页面,然后提交。问题在于提交表单的按钮,即<a>
元素。看起来这样:
<a class="css_class" href="#" onclick="RunSomeScript; return false;">
<span>
Enter
</span>
</a>
RunSomeScript
脚本似乎正在发生魔术。这似乎绕过了重定向页面,并带我到页面上,然后将我试图刮擦的数据带到页面上。不幸的是,我似乎无法弄清楚如何用机械化正确提交表格。我尝试通过将<a>
的href
属性传递到<a>
元素上的Mechanize#单击方法,但这似乎也没有起作用。如何正确单击此链接(即提交表单的提交)和/或运行RunSomeScript
脚本以在此重定向页面上提交表单?
我认为您可以直接找到表格并提交机械化,即
# 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
在您的情况下,您可以使用一些ID找到表单,或者只使用
form = page.forms.first
# do whatever you want with this form and then
page = form.submit
我没有或如何获得支持JavaScript的机械化,但是我看到了您可能会看到的其他项目:
Capybara,使用Poltergeist(Phantomjs)驱动程序或Watir,也许也使用其phantomjs支持。