代码之家  ›  专栏  ›  技术社区  ›  Berry Tsakala

使用selenium和firefox保存图像

  •  9
  • Berry Tsakala  · 技术社区  · 15 年前

    我正在尝试使用selenium服务器和python客户端保存网站中的图像。 我知道图片的url,但找不到保存它的代码,无论是文档本身,还是嵌入到当前浏览器会话中。

    到目前为止,我找到的解决方法是保存页面的屏幕截图(有两种selenium方法可以做到这一点),但我想要原始图像。

    我不介意摆弄点击菜单选项等,但我找不到如何。

    谢谢

    5 回复  |  直到 14 年前
        1
  •  5
  •   Scott Szretter    14 年前

    我找到了将图像放入画布中,然后将其转换为数据的代码——例如,可以对base64进行编码。我的想法是使用selenium中的eval命令调用它,但是在我的测试中,todataurl抛出了一个安全错误1000。如果不是因为那个错误的话,看起来它是如此接近一个解决方案。

    var data, canvas, ctx;
    var img = new Image();
    img = document.getElementById("yourimageID");
    canvas = document.createElement('canvas');
    canvas.width = img.width;
    canvas.height = img.height;
    ctx = canvas.getContext("2d");
    ctx.drawImage(img, 0, 0);  // everything works up to here
    data = canvas.toDataURL();  // this fails ***
    var base64Img = data.replace(/^data:image\/(png|jpg);base64,/, "");
    

    我做了一些研究,发现当图像来自不同的域时,不允许使用todataurl。然而,我甚至尝试了保存页面的代码,除去图像本身和脚本之外的所有内容。

    例如(index.html):

    <html><head></head><body>
    <img src="local/hard/disk/img.jpg" id="yourimageID">
    <script>
    // script from above
    </script>
    </body></html>
    

    img.jpg和index.html存储在本地,在firefox本地打开页面,仍然会得到1000个安全错误!

        2
  •  3
  •   Patrick Lightbody    15 年前

    要做到这一点(要实际捕获发送到浏览器的内容),您需要修改SeleRC的代理代码(参见PROXHANDROL.java),并将文件本地存储在磁盘上,以将响应发送回浏览器。

        3
  •  2
  •   humanumbrella    14 年前

    我正试图完成同样的任务,但我想抓取的图像是我的显示器(墙纸)的大小,所以截图解决方案对我不起作用。我想了个办法…

    我已经设置了selenium以进入我想要的页面(这会引发所有会话的好处) 然后我使用一个名为“workspace macro”的程序循环遍历selenium任务。

    从这里拿过来 http://www.tethyssolutions.com/product.htm --他们有一个试用版,我认为它可以运行30次或更久。

    以下是进展:

    • 启动Firefox
    • 打开Selenium并加载测试用例
    • 开始,但要迅速暂停。
    • 录制一个宏,在selenium上按下“step”,然后转到firefox窗口,单击“文件”->“将页面另存为”,保存,然后停止录制
    • 运行宏X次…
    • 利润??

    干杯

        4
  •  0
  •   Adrian Mester    15 年前

    我没有使用过selenium,但是如果你知道图片的url,为什么不直接使用:

    from urllib import urlretrieve
    
    urlretrieve(url, filename)
    

    它将把url保存到文件名。 更多信息 here

        5
  •  -1
  •   Webber    15 年前

    转到图像url,然后截取页面截图怎么样?Firefox全屏显示图像。希望这有帮助…