リンクをクリックする方法いろいろ

link_with(:text => xxx) を使うパターン

これが1番使うパターン。例えば、次のような HTML の場合に使う。

<a href="/xxx/yyy/zzz">ここをクリックしたい</a>

この場合は、単純に次のようにするとクリックすることができる。

agent = Mechanize.new
  :
agent.page.link_with(:text => "ここをクリックしたい").click

link_with(:href => xxx) を使うパターン

例えば、次のような HTML だと link_with(:text => xxx) を使うことができない。

<div id="div1">
    <a href="/xxx/yyy/zzz">
        <span class="text">ここをクリックしたい</span>
    </a>
</div>

なので、この場合は、a タグの href 属性を取得して、link_with(:href => xxx).click と実行すると、「ここをクリックしたい」をクリックできる。
href を取得するには、この場合だと次のようになる。

agent = Mechanize.new
  :
agent.page.search('//div[@id="div1"]/a/@href').text

なので、次のようにするとクリックすることができる。

agent = Mechanize.new
 :
href = agent.page.search('//div[@id="div1"]/a[@id="a1"]/@href').text
agent.page.link_with(:href => href).click

link_with(:dom_id => xxx) を使うパターン

link_with は id を指定することもできる。例えば、次のような HTML の場合に使える。

<div id="div1">
    <a id="a1" href="/xxx/yyy/zzz">
        <span class="text"ここをクリックしたい</span>
    </a>
</div>

この場合は、次のようにすると id 指定でクリックすることができる。

agent = Mechanize.new
  :
agent.page.link_with(:dom_id => "a1").click

link_with(:dom_class => xxx) を使うパターン

class 指定でもクリックすることができる。例えば、次のような HTML の場合に使える。

<div id="div1">
    <a class="class-a" href="/xxx/yyy/zzz">
        <span class="text"ここをクリックしたい</span>
    </a>
</div>

この場合は、次のようにすると class 指定でクリックすることができる。

agent = Mechanize.new
  :
agent.page.link_with(:dom_class => "class-a").click