我试图使用CasperJS作为网页刮刀,并且有一个页面,带有按钮,当点击时将加载数据.所以,我想先点击所有这些按钮,然后在实际进行查询之前等待所有必要的数据.
问题在于Casper,casper.thenClick(selector)点击第一个元素.但是,如何迭代并根据选择器单击每个元素?
请注意,这些按钮没有ids.他们都有通用类选择器.
防爆.
<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”)不起作用.
解决方法
您可以尝试使用评估代替放入DOM中(我认为页面上有jquery).
casper.thenEvaluate(function() { $('button.load-btn').click(); });
请记住,您将需要等待某事出现.
casper.wait(2000,function() {...});
或使用waitFor function之一