Selenium webdriver 截图 太长截不全的问题

Selenium webdriver 截图 太长截不全的问题

1、环境

    selenium webdriver.net 2.46.0.0 + firefox 37.0.1 + win 8.1

2、问题

    网页截图--如果网页很长,无法截取全部。如 http://sports.sina.com.cn

 

3、原因分析

    1)因为webdriver2.0 是将命令经RemoteWebDriver服务,将浏览器(实现相应的协议)内部命令发送到远程(也可以是本地)浏览器,执行后返回执行数据! 所以就想 是不是 有Response最大值限制?捣鼓半天 无果。。

    2)是不是根源出问题了?(浏览器截图的时候) 

      google一番  发现 webdriver 截图其实是将网页画到一个 “canvas”。

fxdriver.screenshot.grab = function(a) {
  var b = a.document, c = b.documentElement;
  if (!c) {
    throw Error("Page is not loaded yet, try later");
  }
  var d = b.getElementById("fxdriver-screenshot-canvas");
  null == d && (d = b.createElement("canvas"), d.id = "fxdriver-screenshot-canvas", d.style.display = "none", c.appendChild(d));
  var e = c.scrollWidth;
  b.body && b.body.scrollWidth > e && (e = b.body.scrollWidth);
  c = c.scrollHeight;
  b.body && b.body.scrollHeight > c && (c = b.body.scrollHeight);
  32767 <= e && (e = 32766);
  32767 <= c && (c = 32766);
  d.width = e;
  d.height = c;
  try {
    var f = d.getContext("2d");
  } catch (g) {
    throw Error("Unable to get context - " + g);
  }
  try {
    f.drawWindow(a, 0, 0, e, c, "rgb(255,255,255)");
  } catch (h) {
    throw Error("Unable to draw window - " + h);
  }
  return d;
};

然后又联想到之前的8192px,发现大部分浏览器默认 都只可用的8192像素, 超出范围的为空白。但是如果浏览器开启GPU加速的话则没有这个限制。

火狐浏览器配置方式如下:地址栏输入about:config-> 搜索  gfx.font_rendering.directwrite.enabled -> 设置成true 就可以了

 

这样截图就可以 截全了!!

参考:

http://www.techlivez.com/2011/03/how-to-enabledisable-gpu-acceleration-in-ie-chrome-firefox/

http://segmentfault.com/q/1010000000601812

 

转载于:https://www.cnblogs.com/clarlespeng/p/4570908.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值