我正在尝试学习CasperJS,一开始我想创建一个小型的yummly.com刮刀。我想要列出100-1000种流行食谱。
在我尝试点击触发更多食谱加载的元素之前,一切都很顺利。我已经尝试过各种方式,xpath,选择器,标签。我真的不知道可能是什么问题。
这是我的代码:
var utils = require('utils');
var casper = require('casper').create({
verbose: true,
logLevel: 'error',
pageSettings: {
loadImages: false,
loadPlugins: false,
userAgent: 'Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.2 Safari/537.36'
}
});
var url = "http://www.yummly.com/browse/popular-now";
var x = require('casper').selectXPath;
function getLinks() {
var links = document.querySelectorAll('div.y-title a');
return Array.prototype.map.call(links, function(e) {
return e.getAttribute('href');
});
}
casper.start(url, function() {
console.log(this.getTitle());
});
// Try to click with xpath
casper.wait(2000, function() {
casper.click(x('//*[@id="more"]'));
});
// Try to click with label
casper.wait(2000, function() {
this.clickLabel('See more', 'a');
});
// Try to click with selector
casper.wait(2000, function() {
casper.click('#more');
});
// Try to wait for selector
casper.waitForSelector('#more', function() {
this.click('#more');
casper.wait(2000, function(){
links = this.evaluate(getLinks);
console.log(links);
});
});
casper.run();
我真的不知道可能导致这个问题的原因。
答案 0 :(得分:0)
您的代码适用于PhantomJS 2。
点击不适用于PhantomJS 1.x.我尝试了使用PhantomJS版本1.9.7和1.9.8点击this question的三种不同变体:
el.dispatchEvent(ev)
casper.page.sendEvent('click', ...)
$(el).click()
他们都没有奏效。所以你需要更新你的版本。