Selenium中各浏览器默认截图窗口尺寸是什么及如何查看
问题描述
使用Django、pytest-django和Selenium编写了以下代码,在Google Chrome、Microsoft Edge和Firefox浏览器中截取Django Admin页面截图时,发现各浏览器生成的截图尺寸不一致,想了解Selenium中各浏览器的默认截图窗口尺寸,以及如何查看该尺寸。
import os import pytest from selenium import webdriver def take_screenshot(driver, name): os.makedirs(os.path.join("screenshot", os.path.dirname(name)), exist_ok=True) driver.save_screenshot(os.path.join("screenshot", name)) @pytest.fixture(params=["chrome", "edge", "firefox"], scope="class") def driver_init(request): if request.param == "chrome": web_driver = webdriver.Chrome() request.cls.browser = "chrome" if request.param == "edge": web_driver = webdriver.Edge() request.cls.browser = "edge" if request.param == "firefox": web_driver = webdriver.Firefox() request.cls.browser = "firefox" request.cls.driver = web_driver yield web_driver.close() @pytest.mark.usefixtures("driver_init") class Screenshot: def screenshot_admin(self, live_server): self.driver.get(("%s%s" % (live_server.url, "/admin/"))) take_screenshot(self.driver, "admin/" + self.browser + ".png")
解答
各浏览器默认截图窗口尺寸
Selenium启动浏览器时的默认窗口尺寸没有统一标准,会受浏览器本身默认设置、操作系统、Selenium版本影响,常见的默认尺寸大致如下:
- Google Chrome:通常为1024×768像素,部分环境下也可能是800×600像素(取决于系统默认窗口配置)
- Microsoft Edge:和Chrome基于同内核,默认尺寸与Chrome基本一致,多为1024×768像素或系统默认窗口大小
- Mozilla Firefox:默认窗口尺寸通常是800×600像素,部分环境下也会是1024×768像素,受系统默认设置影响
如何查看当前窗口/截图尺寸
方法1:通过Selenium API获取窗口尺寸
在测试代码中添加获取窗口尺寸的逻辑,save_screenshot默认截取整个可视窗口内容,因此窗口尺寸就是截图尺寸。修改后的代码示例:
@pytest.mark.usefixtures("driver_init") class Screenshot: def screenshot_admin(self, live_server): self.driver.get(("%s%s" % (live_server.url, "/admin/"))) # 获取当前浏览器窗口尺寸 window_size = self.driver.get_window_size() print(f"{self.browser} 窗口尺寸:宽度{window_size['width']}px,高度{window_size['height']}px") take_screenshot(self.driver, "admin/" + self.browser + ".png")
get_window_size()方法返回包含width和height键的字典,对应窗口的宽高像素值。
方法2:读取已生成截图的实际尺寸
如果已经生成截图文件,可以用Python的PIL库读取图片尺寸:
from PIL import Image def get_screenshot_size(screenshot_path): with Image.open(screenshot_path) as img: width, height = img.size print(f"截图尺寸:宽度{width}px,高度{height}px") # 调用示例 get_screenshot_size("admin/chrome.png")
如果需要统一各浏览器的截图尺寸,可以在初始化浏览器时设置固定窗口大小,比如在driver_init fixture中添加:
web_driver.set_window_size(1920, 1080) # 设置为1080P分辨率
内容的提问来源于stack exchange,提问作者Super Kai - Kazuya Ito
相关产品推荐
相关产品推荐

