リンクをクリックする方法いろいろ
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