CasperJS点击按钮不会触发任何内容

时间:2015-04-17 09:26:12

标签: javascript casperjs

我正在尝试学习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();

我真的不知道可能导致这个问题的原因。

1 个答案:

答案 0 :(得分:0)

您的代码适用于PhantomJS 2。

点击不适用于PhantomJS 1.x.我尝试了使用PhantomJS版本1.9.7和1.9.8点击this question的三种不同变体:

  • 使用JavaScript:el.dispatchEvent(ev)
  • 使用PhantomJS:casper.page.sendEvent('click', ...)
  • 使用jQuery:$(el).click()

他们都没有奏效。所以你需要更新你的版本。