2017-11-11 124 views
0

我試圖在Node上使用Phantom(npm install phantom),它似乎在Page.open返回promise完全填充前並未執行所有javascript。有沒有辦法確保所有的JavaScript都被執行。PhantomJS的NodeJS API打開方法不會執行完整javascript

var args = []; // ["--platform windows:dpiawareness=0"]; 
    phantom.create(args).then((ph) => { 
     VAR.ph = ph; 
     return ph.createPage(); 

    }).then((page) => { 
     VAR.page = page; 
     return page.setting("resourceTimeout", STATIC.phantomResourceTimeout); 

    }).then(() => { 
     return VAR.page.open(url); 

所以,當promise從page.open返回時,它有時會返回整頁,有時會返回腳本部分執行的頁面。

VAR.page.property('content'); 

而當從這裏檢索內容它不是整頁?

+1

可能重複[在phantomjs中使用「window.onload」](https://stackoverflow.com/questions/24865467/use-window-onload-in-phantomjs) –

+0

PhantomJS已被**遺棄**,你可以嘗試使用**無頭**鉻的GoogleChrome/puppeteer。圖書館有許多功能。 –

回答

-1

嘗試使用這樣的:

page.onLoadFinished = function(status){ 
    // do whatever you want 
}; 

我敢肯定,錯誤只是發生,因爲你的頁面還沒有完成加載呢。使用此代碼在頁面加載事件之後運行您的功能以避免錯誤。

問候。