2016-09-01 36 views
1

需要使用ruby mechanize浏览结果页面的帮助。我可以将表单值下载并下载首页的结果。链接到下一页是使用红宝石机械化浏览结果页面(链接有“onclick =”定义)

<a href=# onclick="setnext();">Next</a> 

如何单击next并导航到后续结果页。我曾尝试

page = r_page.link_with(:text => 'Next').click 

,也使用的Watir

@browser = Watir::Browser.new 
@login_page = result_page 
@l_page = @login_page.link(:text => "Next").fire_event('onclick') 
@browser.goto @l_page 

我得到的URL

<a href=# onclick="setnext();">Next</a> 

没有形成正确的错误消息。我也试着用page_no作为参数来调用页面,但它加载了表单提交页面而不是结果页面。请帮助。 谢谢你。

+0

'Next'是无效的html,它需要'#'附近的引号 –

+0

是的,你是对的,它是href =“#” – user6733460

+0

你可以给我result_page网址吗? –

回答

0

问题是,mechanize不会解释单击按钮时应执行的JavaScript函数(onclick="setnext();")。

您至少有两种选择:

  1. 阅读并(通过它或调试)了解JavaScript代码。
  2. 使用您的浏览器附带的工具(例如,Mozilla Firefox中的Developer,通常可通过按F12访问,Chromium以非常类似的方式访问),转到网络选项卡并检查实际发生的流量。当你点击按钮/链接并且很可能知道如何构造URL和参数时,你会看到一个请求到一个特定URL(带有一些有趣的参数?)的GET/POST

由于我很懒,理解足够的HTTP并且还不喜欢阅读JS代码,所以我通常使用第二种方法。

因为mechanize不会解释开箱即用的JavaScript,所以我首先关闭浏览器中的JavaScript并查看页面是否正常工作。如果它没有,我看看生成的请求(JS再次打开)。

+0

页面行为随javascript关闭而改变。 setnext()的js代码具有getElementById(“Selected_pa​​ge”)。value = 2。我以为我们可以使用watir调用onclick函数,但这也不起作用,有没有一种不同的方式来使用watir来触发onclick javascript函数。谢谢。 – user6733460