ページにリンクがありますが、私はそれに行きたいですが、それは単なるjavascriptコマンドです。どのように機械化してリンクに行くのですか?mechanize-firefoxでjavascriptリンクに行く
<a href="javascript:__doPostBack(ctl54$cphMainContent$resultsGrid$ctl54$ctl25$ctl62$ctl13,88)"><span>abc</span></a>
ページにリンクがありますが、私はそれに行きたいですが、それは単なるjavascriptコマンドです。どのように機械化してリンクに行くのですか?mechanize-firefoxでjavascriptリンクに行く
<a href="javascript:__doPostBack(ctl54$cphMainContent$resultsGrid$ctl54$ctl25$ctl62$ctl13,88)"><span>abc</span></a>
ページがなく、そのHTMLとJSは推測できません。 follow_link()
メソッドはJSリンクでは機能しません。以下の方法はありますが、もちろんページなしでテストすることはできません。
text_regex
の)
text
と
text_contains
関連するオプションもあります
use WWW::Mechanize::Firefox;
# Get to your page with the link(s)
my $link = find_link_dom(text_regex => 'abc'); # Or use find_all_links_dom()
$link->click();
# $mech->click({ dom => $link }) # works as well
click
方法のためのDOMオブジェクト(複数可)としてリンク(複数可)を取得することです他人の。 click
メソッドは、イベントのリストで待機してから、戻ります。例えば、this recent postを参照してください。これは完了までに時間がかかるページにとっては重要です。
find_link_dom()
およびclick
の方法についてのドキュメントを参照してください。彼らは非常に詳細ではなく、豊かな例ではありませんが、十分に遊びとそれを把握するために提供しています。
あなたがリンクを調べる必要がある場合は、MozRepl::RemoteObject
インスタンスとして、FirefoxのDOMの配列または配列への参照(コンテキストに応じて)を返すfind_all_links_dom()
を使用します。
my @links_dom = find_all_links_dom(text_contains => 'abc');
# Example from docs for find_link_dom()
for my $ln (@links_dom) {
print $ln->{innerHTML} . "\n"
}
あなたがそれを使って何ができるかを見るには、ページを参照してください。MozRepl::RemoteObjectfind_link_dom()
のオプションをクリックするリンクを見つけ出す必要がある場合は、難解です。
これは、リンクで<span>
で、__doPostBack
リンクを使用していますおもちゃのページでのみテストされています。
find_all_links_domを使用するリンクをどのようにループして、それらのデータを見ることができますか? – Bill
@Bill 'find_all_links_dom()'は、適切なメソッドを呼び出すことができるDOMオブジェクトの配列を返します。つまり、 'for $ dobj(@links){}'のような通常のループを設定し、どのように曖昧さを除去する必要があるかによって、それぞれに適したものを呼び出します。私は答えを更新します。 – zdim
@Bill答えを更新しました。 – zdim