Selenium 与 Chrome 驱动程序在视网膜显示屏上以双分辨率截取屏幕截图

rev*_*evy 4 python selenium google-chrome retina-display selenium-chromedriver

我正在使用SeleniumChrome 驱动程序来截取一些网站屏幕截图。我需要屏幕截图具有非常具体的分辨率 ( 1024x768)。我注意到,尽管浏览器已正确设置为该分辨率,但磁盘上的屏幕截图是以双分辨率保存的 ( 2048x1536)。我怀疑这是由于我运行应用程序的 MacBook(2017 年中 MacBook Pro)的视网膜分辨率造成的。这是我正在使用的代码:

from selenium import webdriver
from selenium.webdriver.chrome.options import Options

width = 1024
height = 768

chrome_options = Options()
chrome_options.add_argument('--disable-gpu')
chrome_options.add_argument('--no-sandbox')
chrome_options.add_argument('--lang=en')
chrome_options.add_argument('--headless')
chrome_options.add_argument(f'window-size={width}x{height}')

driver = webdriver.Chrome(options=chrome_options)

url = 'https://google.com'
driver.get(url)
print('Window size', driver.get_window_size())  # Window size {'width': 1024, 'height': 768}

driver.save_screenshot('test.png')  # Image is saved at 2048x1536
Run Code Online (Sandbox Code Playgroud)

有没有办法防止在视网膜上以双分辨率截取屏幕截图?

rev*_*evy 8

找到了一个可能的解决方案:

chrome_options.add_argument('--force-device-scale-factor=1')
Run Code Online (Sandbox Code Playgroud)