【问题标题】:How to capture screenshot in selenium with specific resolution?如何以特定分辨率捕获硒中的屏幕截图?
【发布时间】:2019-09-27 09:57:22
【问题描述】:

我想截取具有特定分辨率的画布元素的屏幕截图。我正在使用下面的 sn-p 来捕获屏幕截图。这可行,但总是截取分辨率为 1544px*638px 的屏幕截图。基于什么(浏览器窗口或我的窗口屏幕)截屏。我正在使用 chrome 浏览器。如何修改下面的代码以截取分辨率为 500 * 325 左右的屏幕截图。

我使用了 set_window_size(500, 325) 并且得到了大小为 750 * 135 的屏幕截图

def capture_screenshot():
    driver = LiveLibrary.get_webdriver_instance()
    driver.set_window_size(500, 325) 
    canvas_element = driver.find_element_by_xpath("//canvas")
    result = canvas_element.screenshot_as_png
    with open('save.png', 'wb') as f:
        f.write(result)

有人可以帮我解决这个问题吗?谢谢。

【问题讨论】:

  • 截取的屏幕截图取决于您的屏幕分辨率...我相信您无法操纵它。您可以使用 OpenCV 库来解决这个问题
  • 分辨率是指尺寸吗?还是图像的实际质量?
  • 尺寸(宽高)
  • 你试过用PIL调整它的大小吗?

标签: python selenium


【解决方案1】:

您可以使用 PIL 的Image.resize 调整屏幕截图的大小。喜欢:

from PIL import Image
import io

    ...

    result = canvas_element.screenshot_as_png
    image = Image.open(io.BytesIO(result))
    imageResized = image.resize( (500,325), Image.ANTIALIAS) 
    with open('save.png', 'wb') as f:
        imageResized.save(f , format='PNG') 

【讨论】:

  • 我以后也得用这张图对比一下。
  • 如果比较是在同一个python脚本中,你可以从capture_screenshot()返回图片
  • 为什么要更改Image的quality(而不是默认的80)?
  • @wishmaster,感谢您注意到,删除了它,当然质量不应该设置为 png 是无损格式,我的错,我没有多想就复制粘贴了保存调用
猜你喜欢
  • 2013-06-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-24
  • 2012-01-31
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多