【问题标题】:How to modify the href of a Ruby Mechanize::Page::Link before clicking it如何在单击之前修改 Ruby Mechanize::Page::Link 的 href
【发布时间】:2016-03-03 15:50:06
【问题描述】:

我有一个使用 Mechanize 会话检索到的页面,我需要单击 Mechanize::Page::Link,如下例所示:

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)

我该怎么做?

我应该补充一点,我已经尝试过以下方法[应该早点提到这些,然后一些无情的灵魂就不会记下我的问题!]...

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

【问题讨论】:

  • 你试过什么? Mechanize 在内部使用 Nokogiri 来解析 HTML,而 Nokogiri 允许您更改 DOM,从而可以在 HTML 中操作 URL。这些步骤在互联网上都有详细记录。
  • Link#clickMechanize#get 做同样的事情,所以get 将是一个更明智的方法

标签: ruby nokogiri mechanize


【解决方案1】:

pguardiario 建议的解决方案如下。

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

非常感谢!

【讨论】:

    猜你喜欢
    • 2013-11-16
    • 2015-06-21
    • 2012-12-31
    • 1970-01-01
    • 2011-11-07
    • 2013-10-03
    • 2012-05-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多