2

我正在尝试使用 ruby​​ 中的机械化来隐藏字段并尝试单击它。

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

但这是一个错误:

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>
4

2 回答 2

1

Mechanize 目前不支持 JavaScript。我建议您尝试弄清楚服务器期望用户代理发送什么,然后使用 Mechanize 复制它。您可以使用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
于 2012-07-17T15:42:28.727 回答
0

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

于 2012-07-16T06:54:15.330 回答