phantonjs 上的点击自动化不起作用
The click automation on phantonjs is not working
官方关于点击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/, instead of https://www.iana.org/domains/reserved(点击的目标)的屏幕截图。
如何解决?
我不确定 jQuery 如何处理点击,但通过 vanilla JS 访问元素并且 "clicking" 它会起作用:
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 已经非常过时并且将越来越难以维护未来的股票
官方关于点击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/, instead of https://www.iana.org/domains/reserved(点击的目标)的屏幕截图。
如何解决?
我不确定 jQuery 如何处理点击,但通过 vanilla JS 访问元素并且 "clicking" 它会起作用:
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 已经非常过时并且将越来越难以维护未来的股票