我正试图在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>
答案 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解释器等的完整浏览器。