2016-03-30 14 views
0

ile bir javascript bağlantısı olacak Bir sayfada bir bağlantı var ve ben ona gitmek istiyorum ama sadece bir javascript komutu. Mekanize ile bağlantıya nasıl giderim?mechanize-firefox

<a href="javascript:__doPostBack(&#21;ctl54$cphMainContent$resultsGrid$ctl54$ctl25$ctl62$ctl13&#24;,&#56;&#56;)"><span>abc</span></a> 

cevap

1

Yalnızca sayfa ve HTML ve JS'sini tahmin edemezsiniz. follow_link() yöntemlerinin JS bağlantılarıyla çalışmadığını unutmayın. Aşağıdaki yöntemde, ancak elbette sayfa olmadan test edemiyorum.

muhtemelen en iyi bahis sayısıyla birlikte (yerine text_regex arasında) text ve text_contains ilgili seçenekler de vardır

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 yöntemi için DOM nesnesi (ler) olarak bağlantı (lar) elde etmektir diğerleri. Geri dönmeden önce click yönteminin olayların bir listesinde bekleyeceğini unutmayın. Bakınız örneğin this recent post. Bu, tamamlanması uzun süren sayfalar için kritik öneme sahiptir.

find_link_dom() ve click yöntemleri için belgelere bakın. Örneklerde çok detaylı ya da zengin değildirler, ancak oynamak ve anlamak için yeterli olanı sağlarlar.

Bağlantıları sorgulamanız gerekiyorsa, örnekleri olarak Firefox's DOM dizisine bir diziyi veya diziye bir başvuru döndüren find_all_links_dom() kullanın.

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" 
} 

onunla neler yapabileceğini görmek için MozRepl::RemoteObject için sayfaya bakın. Eğer sadece find_link_dom() seçeneklerine tıklamak için hangi linkin yeterli olması gerektiğini bulmanız gerekiyor.

Bu

sadece linkte <span> ile __doPostBack bağlantısını kullanan bir oyuncak sayfası ile test edilmiştir.

+0

find_all_links_dom sayfasını kullanarak bağlantılardan nasıl geçebilir ve bunlara ait verileri görebilir miyim? – Bill

+0

@Bill 'find_all_links_dom()', uygun yöntemlere başvurabileceğiniz bir dizi DOM nesnesi döndürür. Yani, $ dobj (@links) {} 'için normal bir döngü oluşturuyorsunuz ve bunları nasıl ayırmanız gerektiğine bağlı olarak her biri için uygun olanı çağırınız. Cevabı güncelleyeceğim. – zdim

+0

@Bill Cevabı güncellendi. – zdim