2015-04-17 96 views
1

我想學習CasperJS和一開始我想創建小yummly.com刮板。我想抓取100-1000種流行食譜的清單。CasperJS點擊按鈕不會觸發任何東西

一切都很好,直到我試圖點擊觸發更多食譜加載的元素。我已經嘗試了各種方法,xpath,selector,label。我真的不知道可能是什麼問題。

這裏是我的代碼:

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

請註冊到'resource.error','page.error','remote.message'和'casper.page.onResourceTimeout'事件([Example](https://gist.github.com/artjomb/) 4cf43d16ce50d8674fdf))。也許有錯誤。 –

+0

不幸的是,所有這些測試似乎都可以。在我看來,問題可能是在href中調用javascript。也許CasperJS沒有正確加載Javascript。我真的不知道:( – TopperHarley

+0

http://stackoverflow.com/questions/29616350/casperjs-click-not-firing-click-event –

回答

0

您的代碼工作正常PhantomJS 2.

的點擊PhantomJS 1.x中不起作用我嘗試一下的三種不同的變種,從this question與PhantomJS版本1.9.7和1.9.8:

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

他們都沒有工作。所以你需要更新你的版本。

+0

[CasperJS 1.1.0文檔](http://docs.casperjs.org /en/latest/installation.html)說它需要「PhantomJS 1.8.2或更高,但低於2.0」。 –

+0

@CiroSantilli是的,但是你可以[從git安裝CasperJS](http://docs.casperjs.org /en/latest/installation.html#installing-from-git),它可以和PhantomJS 2.0.0一起使用。 –

相關問題