Перейти на ссылку JavaScript с Mechanize-Firefox
На странице есть ссылка, и я хочу перейти на нее, но это всего лишь команда javascript. Как с механизатором мне перейти по ссылке?
<a href="javascript:__doPostBack(ctl54$cphMainContent$resultsGrid$ctl54$ctl25$ctl62$ctl13,88)"><span>abc</span></a>
1 ответ
Без страницы, ее HTML и JS можно только догадываться. Обратите внимание, что follow_link()
методы не работают со ссылками JS. Метод ниже, но я, конечно, не могу проверить без страницы.
Вероятно, лучше всего получить ссылку (и) в качестве объекта (ов) DOM для click
метод
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
Это также text
а также text_contains
соответствующие варианты (вместо text_regex
), наряду с рядом других. Обратите внимание, что click
Метод будет ждать в списке событий, прежде чем вернуться. Смотрите, например, этот недавний пост. Это очень важно для страниц, выполнение которых занимает больше времени.
Смотрите документы для find_link_dom()
а также click
методы. Они не очень подробны или богаты примерами, но дают достаточно, чтобы поиграть и разобраться.
Если вам нужно опросить ссылки, используйте find_all_links_dom()
, который возвращает массив или ссылку на массив (в зависимости от контекста) DOM Firefox как MozRepl::RemoteObject
экземпляров.
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::RemoteObject, чтобы узнать, что вы можете с ней сделать. Если вам нужно только узнать, по какой ссылке нажать на опции find_link_dom()
должно быть значительным.
Это было проверено только с игрушкой страницы, которая использует __doPostBack
связать с <span>
в ссылке.