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

最新文章

  1. 【mysql】mysql 常用建表语句
  2. mysql安装时到最后start service时就不响应了的解决方法
  3. 如何访问facebook (转)
  4. sqlserver 自增ID插入指定数据
  5. 基于jquery的-获取短信验证码-倒计时
  6. Visual Studio 2012+jQuery-1.7.1
  7. js方式清空表单数据的两种方式
  8. &lt;转&gt;离婚前夜悟出的三件事
  9. php 获取当前url,可以规避框架url重写后还有index.php的情况
  10. jQuery 其他操作
  11. openstack 实例迁移
  12. java守护线程(后台线程)
  13. javascript模块加载框架seajs详解
  14. [Unity]C#.数据类型总结
  15. 【Java基础】 Java动态代理机制
  16. Redis的安装和部署
  17. paypal的IPN机制
  18. 使用gulp打包普通项目
  19. 【iCore4 双核心板_ARM】例程二十五:LWIP_DNS实验——域名解析
  20. angularjs 下滑线滑动

热门文章

  1. javascript 字符串转为对像函数eval(&quot;string&quot;)
  2. javascript返回顶部几种代码总结
  3. canvas ---1
  4. 自己手动绿色化MyEclipse
  5. C# XmlSerializer序列化浅析
  6. 2016ICPC China-finals 题解
  7. cf E. Neatness
  8. #if defined 的意思?
  9. logstash 安装zabbix插件
  10. Html5/Css3 向下兼容placeholder