Я пытаюсь просканировать все ссылки на внутреннем сайте, используя WWW :: Mechanize :: Firefox. Сайт загружает некоторый контент через javascript, поэтому я должен сначала щелкнуть по некоторым элементам того же класса «expand». Структура сайта такова:WWW :: Mechanize :: Firefox, щелкнув все изображения класса
<table>
<tr>
<td>
<a id="xyz" href="somesite"> Content </a>
</td>
</tr>
<tr>
<td>
<div>
<a id="twistie" onclick="expand_this">
<img class="expand" border="0" width="13" height="13" alt="Show All" title="Show All" src="images/plus.gif">
</a>
</div>
</td>
</tr>
</table>
щелчок по изображению загружает больше контента в контейнер-контейнер. На сайте несколько кратных изображений класса расширяются, и я должен щелкнуть их по всем для доступа ко всему контенту. Здесь я терплю неудачу.
То, что я пытался до сих пор:
$mech->click({ xpath => '//img[@class="expand"]', synchronize => 0 });
Это щелкает только первый из образов-элементов.
my @images = $mech->xpath('//img[@class="expand"]', synchronize => 0);
возвращает столько элементов массива, сколько я могу считать вручную на своей странице. Тем не менее, я немного потерял, как вставить элементы массива, возвращенные в действие click.
Я могу открыть первый элемент с
$mech->click({ xpath => '//img[@class="expand"][0]', synchronize => 0 });
Но
$mech->click({ xpath => '//img[@class="expand"][1]', synchronize => 0 });
возвращает мне
No elements found for //img[@class="expand"][1] at (eval 1377)[/usr/share/perl/5.18/perl5db.pl:732] line 2.
Я попробовал этот подход дальше:
foreach my $id (0 .. scalar @images) {
print $id, "\n";
$mech->click({ xpath => qq(//img[\@class="expand"]["$id"]), synchronize => 0 });
}
, но это не открывает никаких элементов (не знаю почему).
Я что-то упустил? Что мне нужно сделать, чтобы щелкнуть все img-теги общего класса, поскольку изображения, к сожалению, не имеют идентификатора?
Благодарим за предложение! Я думаю, мне нужно синхронизировать клик снова, но пытаюсь «$ mech-> click ($ plusses [0], {synchronize => 0});' также зависает в моем отладчике. – yulivee