2016-03-03 53 views
-1

我有一個使用Mechanize會話檢索的頁面,我需要點擊一個Mechanize :: Page :: Link,如下例所示:如何在點擊之前修改Ruby Mechanize :: Page :: Link的href

my_link = @session.page.link_with(:id => "aPageLink") 
# my_link.class == Mechanize::Page::Link 
. 
. 
. 
@session.click(my_link) 

不過,我需要修改被點擊之前在鏈接使用的URI。

my_link = @session.page.link_with(:id => "aPageLink") 
# my_link.class == Mechanize::Page::Link 
. 
. 
. 
# modify my_link here 
. 
. 
. 
@session.click(my_link) 

我該怎麼做?

我要補充一點,我已經試過以下已[應該提到這些早期那麼一些不屈不撓的靈魂就不會下調我的問題!] ...從pguardiario的建議

my_link.href = "my/modified/uri" 
my_link['href'] = "my/modified/uri" 
+1

你試過了什麼? Mechanize在內部使用Nokogiri來解析HTML,而Nokogiri讓您可以更改DOM,從而可以操縱HTML中的URL。這些步驟在互聯網上都有詳細記錄。 –

+1

'Link#click'與'Mechanize#get'做同樣的事情,所以'get'將是一個更明智的方法 – pguardiario

回答

0

解決方案是如下。

my_link = @session.page.link_with(:id => "aPageLink") 

# modify my_link 
modified_link = my_link.href 
modified_link.sub!(/modification/, '') 

# @session.click(my_link) <-- now replaced with following line 
@session.get modified_link, [], my_link.referer 

非常感謝!