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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM