Selenium使用Chrome驱动在Retina显示屏上以双倍分辨率进行截图

3

我正在使用SeleniumChrome driver来截取一些网站的屏幕截图。我需要这些截图以非常特定的分辨率(1024x768)呈现。我注意到虽然浏览器正确地设置了该分辨率,但磁盘上保存的截图分辨率却是双倍的(2048x1536)。我怀疑这是由于我正在运行应用程序的MacBook的Retina分辨率(mid 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

有没有办法防止在 retina 屏幕上截屏时分辨率加倍?
1个回答

6

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

chrome_options.add_argument('--force-device-scale-factor=1')

这将对许多问题有所帮助。 - undetected Selenium
谢谢,这在C#中对我有用:options.AddArgument("--force-device-scale-factor=1"); - null canvas
我发现了一个错误,有时它不使用默认的设备比例因子2。设置后修复了该错误。 - B Seven

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接