首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >幻影out /CasperJS-灰色广告图像

幻影out /CasperJS-灰色广告图像
EN

Stack Overflow用户
提问于 2015-03-24 19:25:35
回答 1查看 114关注 0票数 1

嘿,伙计们,我们只是用咕噜-幻影插件来测试我们的页面(它本质上是PhantomJS &CasperJS的包装器)。

我们的网站上有一些动态的内容(用户的随机配置文件图像和随机广告),因此在每次加载页面时,页面看起来都是不同的,这意味着构建失败。我们希望能够跳进并使用良好的ol‘DOM技术和“灰出”/使这些图像不透明,这样Casper/Phantom就不会看到它们并通过构建。

我们已经看过pageSettings.loadImages = false了,虽然技术上有效,但它也会删除每一张图像,这意味着即使是我们的非广告、非个人资料的图像也会被过滤掉。

下面是一个非常基本的示例测试脚本(不起作用):

代码语言:javascript
复制
casper.start( 'http://our.url.here.com' )
  .then(function(){
    this.evaluate(function(){
      var profs = document.querySelectorAll('.profile');
      profs.forEach(function( val, i ){
        val.style.opacity = 0;
      });
    return;
    });
    phantomcss.screenshot( '.profiles-box', 'profiles' );
  });

我很想知道其他人是如何解决这个问题的,因为我相信这不是一个奇怪的用例(因为很多人在他们的网站上都有动态广告)。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-03-24 20:09:01

你的剧本可能真的能用。问题是profs是NodeList。它没有forEach函数。用这个:

代码语言:javascript
复制
var profs = document.querySelectorAll('.profile');
Array.prototype.forEach.call(profs, function( val, i ){
    val.style.opacity = 0;
});

注册到page.errorremote.message来捕捉这些错误总是一个好主意。

另一个想法是使用resource.requested事件处理程序来中止您不希望加载的所有资源。它使用底层的onResourceRequested PhantomJS函数。

代码语言:javascript
复制
casper.on("resource.requested", function(requestData, networkRequest){
    if (requestData.url.indexOf("mydomain") === -1) {
        // abort all resources that are not on my domain
        networkRequest.abort();
    }
});

如果您的页面能够很好地处理卸载的资源,那么这应该是一个可行的选项。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29241165

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档