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.
find_all_links_dom sayfasını kullanarak bağlantılardan nasıl geçebilir ve bunlara ait verileri görebilir miyim? – Bill
@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
@Bill Cevabı güncellendi. – zdim