2017-07-24 102 views
0

試圖從這個網頁https://weather.com/weather/radar/interactive/l/87562:4:US?layers=rwi在Chrome控制檯querySelector工作,但不PhantomJS使用page.evaluate

我在頁面上的Chrome瀏覽器控制檯跑document.querySelector('.modal').style="display: none;"截圖雷達,擺脫DIV彈出廣告攔截雷達圖片。但無論出於何種原因,PhantomJS不會讓斯巴魯廣告消失。 Current PhantomJS screenshot

我也試着運行document.querySelector('.close').click();來關閉頁面上的廣告,它使用控制檯在Chrome中工作,但不是在PhantomJS中。

我可以在Chrome控制檯中運行querySelector並擺脫Subaru廣告並截取div #imap,但無論出於何種原因,它都不適用於PhantomJS。

我試着在超時時間內移動querySelector,但沒有任何變化。

var page = require('webpage').create(); 
page.viewportSize = { width: 1280, height: 720 }; 


page.open('https://weather.com/weather/radar/interactive/l/87562:4:US?layers=rwi', function (status) { 

page.evaluate(function() { 
    document.querySelector('.modal').style="display: none;" 
    }); 

    setTimeout(function() { 

    var clipRect = page.evaluate(function(){ 

    return document.querySelector('#imap').getBoundingClientRect(); 

     }); 


     page.clipRect = { 
      top: clipRect.top, 
      left: clipRect.left, 
      width: clipRect.width, 
      height: clipRect.height 
     }; 

     console.log(JSON.stringify(clipRect)); 


     page.render('imap2.png'); 

     phantom.exit(); 
    }, 6000); 

任何人都可以指出我在這裏失蹤的方向嗎?

感謝,

大衛

回答

0

我認爲你應該這樣做:

return document.querySelector('#imap').getBoundingClientRect(); 

這樣的:

page.evaluate(function(){ 
     return document.querySelector('#imap').getBoundingClientRect(); 
}) 
相關問題