有关单击phantomjs的官方示例不起作用: http://phantomjs.org/page-automation.html
我尝试如下:
function sleep(milliseconds) {
var start = new Date().getTime();
while (true) {
if ((new Date().getTime() - start) > milliseconds) { break; }
}
}
var page = require('webpage').create();
page.open('http://example.com/', function() {
page.includeJs("http://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js", function() {
page.evaluate(function() {
$("a").click();
});
sleep(3000);
page.render('screenshot.png');
phantom.exit()
});
});
但是我得到的是http://example.com/的屏幕截图,而不是https://www.iana.org/domains/reserved(点击的目标)的屏幕截图。
如何解决这个问题?
答案 0 :(得分:0)
我不确定jQuery如何处理点击,但是通过普通JS访问元素并“点击”它会起作用:
page.open('http://example.com/', function() {
page.evaluate(function() {
document.querySelector("a").click();
});
});
等待任意一段时间是不可靠的,最好使用每次触发 页面已完成加载的回调:
page.onLoadFinished = function(){
// What page are we currently on?
var url = page.evaluate(function(){
return document.location.href;
});
console.log(url);
if(url.indexOf("iana") !== -1)
{
page.render('example.png');
phantom.exit();
}
}
关于PhantomJS的强制性注意事项:如果可以,请考虑迁移到puppeteer或任何其他现代的无头解决方案,因为PhantomJS已经过时了,将来将越来越难以维护笔迹