2012-06-28 57 views
9

我正在嘗試使用CasperJS來刮取具有動態內容的網站,目前爲止還沒有完成。該網站使用幾個js庫(例如原型)來使用自動完成來創建內容。因此,我試圖插入一些值並觸發事件來啓動內容創建。插入和觸發事件工作正常,但沒有創建內容。injectJs with PhantomJs and CasperJs

我是CasperJS的新手,發現它與libaries的相對路徑有問題。我懷疑我的問題來自於我的頁面環境中沒有正確加載庫。因此,我試圖用injectJs注入他們這樣

// ...創建卡斯帕,並做一些其他的東西

casper.then(函數(){

this.echo(this.page.injectJs('http://www.my-website.com/path/to/js1')); 
this.echo(this.page.injectJs('http://www.my-website.com/path/to/js2')); 

}); 

不幸的是,這兩個函數都返回false,腳本的路徑是正確的,否則可能是這個問題的根源?

謝謝喲你非常樂意提供任何幫助。

回答

4

我不相信CasperJS可以處理HTTP請求來注入腳本。這很奇怪,因爲他們實際上顯示這個in their FAQ on including jQuery。然而,同樣的FAQ說以下內容:

不能注射使用HTTP協議的腳本,你確實有 使用相對/絕對的文件系統路徑的腳本資源。

只是爲了仔細檢查,我自己使用Mac OS X和上面的代碼嘗試了它。當通過http使用文件時,echo的結果爲false,當使用http時爲true

+0

由於同一目錄中。我想最好的方法是下載腳本,然後從本地路徑包含它們。 – Marco

+3

對於記錄,我已經相應地更新了文檔,對於那個錯誤感到抱歉。 – NiKo

+0

我認爲你現在可以使用'remoteScripts'來注入非本地腳本 – wildpeaks

1

我這是怎麼注入的Jquery在Casperjs腳本

casper.options.clientScripts = ["jquery-3.2.1.min.js"] 

jQuery的文件應該放在哪裏casperjs腳本exisit