2012-07-16 112 views
2

我想在紅寶石機械化隱藏的領域,並試圖點擊它。紅寶石::如何用機械化搜索隱藏的元素

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 

但是,這是一個錯誤:

undefined method `click' for 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

這應該可能找到的鏈接,如果它真的在網頁上,但更大的問題是,點擊一個鏈接的'javascript :;'沒有做你認爲它的事情。那是因爲機械化不是一個帶有JavaScript解釋器的完整瀏覽器等。

1

Mechanize當前不支持javascript。我建議你試試圖 瞭解服務器希望用戶代理髮送什麼,然後用 機械化複製它。您可以使用一個工具,如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