querySelector使用page.evaluate

时间:2017-07-24 23:29:09

标签: javascript json phantomjs casperjs

尝试从此网页https://weather.com/weather/radar/interactive/l/87562:4:US?layers=rwi

截取雷达

我在该页面的Chrome控制台中运行document.querySelector('.modal').style="display: none;",以摆脱阻止雷达图像的div弹出式广告。但无论出于何种原因,PhantomJS都没有让Subaru广告消失。  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);

有人能指出我在这里缺少的方向吗?

谢谢,

大卫

1 个答案:

答案 0 :(得分:0)

我认为你应该这样做:

return document.querySelector('#imap').getBoundingClientRect();
像这样:

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