Ruby ::如何使用mechanize搜索隐藏的元素

时间:2012-07-16 06:34:17

标签: ruby mechanize-ruby

我正试图在ruby中使用mechanize并尝试点击它来隐藏字段。

agent = Mechanize.new
agent.get('http://www.example.com/')
agent.page.link_with(:text => "More Links...")

但是这给了我:

=> nil

实际上,我想点击它:

agent.page.link_with(:text => "More Links...").click

但这是一个错误:

  

未定义的方法`click'代表nil:NilClass

这是我的HTML代码:

<div id="rld-4" class="results_links_more highlight_d links_deep" style="display: none;">
<a class="large" href="javascript:;">More Links...</a>
</div>

2 个答案:

答案 0 :(得分:1)

Mechanize目前不支持javascript。我建议你试试看 out服务器期望用户代理发送什么,然后复制它 机械化。您可以使用HTTPFox这样的工具,它是一个Firefox插件,用于监控Web服务器和浏览器之间的流量。一旦你有了这个,你可以轻松地用机械化复制它。像这样的东西;

agent = Mechanize.new

# Doesn't work

# home_page = agent.get('http://requestb.in/')
# agent.click(home_page.link_with(:text => "Create a RequestBin"))
# => undefined method `[]' for nil:NilClass (NoMethodError)

# Works

# The javascript code just makes a POST request with one parameter
request_bin = agent.post("http://requestb.in/api/v1/bins", { "private" => "false" })
puts request_bin.body

答案 1 :(得分:0)

如果它确实在页面上,那应该可以找到链接,但更大的问题是点击带有'javascript:;'href的链接不会做你认为它做的事情。那是因为mechanize不是一个带有javascript解释器等的完整浏览器。