Я пытаюсь использовать CasperJS как веб-скребок, и есть страница с кнопками, которые будут загружать данные при нажатии. Итак, сначала я хочу щелкнуть по всем этим кнопкам и подождать, прежде чем делать запрос, чтобы захватить все необходимые данные.CasperJS: Как вы нажимаете на все выбранные кнопки?
Проблема в том, что с Casper, casper.thenClick(selector)
кликает первый элемент. Но как вы повторяете и выбираете каждый элемент на основе селектора?
Обратите внимание, что эти кнопки не имеют идентификаторов. У всех есть универсальные селекторы классов.
Ex.
<h3>
<span>Text 1</span>
<span>
<button class="load-btn">show</button>
</span>
</h3>
<h3>
<span>Text 2</span>
<span>
<button class="load-btn">show</button>
</span>
</h3>
<h3>
<span>Text 3</span>
<span>
<button class="load-btn">show</button>
</span>
</h3>
И по какой-то причине casper.thenClick("h3:contains('text 1') .load-btn")
не работает.
Вы проходящее в 'click' функцию от внешнего контекста в контекст страницы. Это не с PhantomJS 1.x. Это изменилось? Я был бы очень удивлен, если это действительно работает, как вы его описываете. –
Я тестировал его снова, все работает хорошо, версия PhantomJS: 2.1.1 –