Próbuję użyć CasperJS jako skrobaczki internetowej, a istnieje strona z przyciskami, które będą ładować dane po kliknięciu. Chciałbym najpierw kliknąć wszystkie te przyciski i poczekać, zanim faktycznie wykonam zapytanie, aby pobrać wszystkie niezbędne dane.CasperJS: Jak klikasz na wszystkie wybrane przyciski?
Problem polega na tym, że w przypadku Caspera, casper.thenClick(selector)
klika pierwszy element. Ale jak iterować i klikać każdy element na podstawie selektora?
Pamiętaj, że te przyciski nie mają identyfikatorów. Wszystkie mają generyczne selektory klasy.
Przykł.
<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>
I z jakiegoś powodu casper.thenClick("h3:contains('text 1') .load-btn")
nie działa.
jesteś przejazdem w 'funkcję click' od zewnętrznego kontekstu do kontekstu strony. To nie działało z PhantomJS 1.x. Czy to się zmieniło? Byłbym bardzo zaskoczony, jeśli to naprawdę działa tak, jak go opisujesz. –
Przetestowałem to ponownie, wszystko działa dobrze, wersja PhantomJS: 2.1.1 –