背景:
当我们通过Chrome无头浏览器来访问本地静态web文件时,并进行截图,我们在进行截图时会发现截图的方法存在2个:
在webdriver中,save_screenshot
和save_screenshot_as_file
是两种不同的方法用于保存屏幕截图。
save_screenshot
方法是将屏幕截图保存为一个字节流,并返回该字节流。你可以使用该方法将截图保存到内存中,并进行进一步的处理或分析。
示例代码:
screenshot = driver.save_screenshot()
# 进一步处理截图
save_screenshot_as_file
方法则是将屏幕截图保存到指定的文件路径中。你需要提供一个文件路径作为参数,webdriver会将截图保存到该路径下。
示例代码:
driver.save_screenshot_as_file('path/to/save/screenshot.png')
因此,两个方法的主要区别在于保存截图的方式:save_screenshot
保存为字节流,save_screenshot_as_file
保存为文件。具体使用哪种方式取决于你的需求和后续处理的方式。
选择我们截图的方法截完图后,会发现截图的效果不是很好,尤其是对于文字,其中的文字展示会出现模糊的情况,我们该如何去处理呢?
解决艰辛历程:
1.最开始我以为是web静态页面上的字体导致,在更换了多个字体后,截出来的图片仍然是很模糊,那么必然不是字体的原因。
2.之后我考虑到了图片的分辨率,于是我修改了图片的分辨率,但是没什么卵用,这就很麻烦了;
3.既然不是web文件本身的原因那么肯定是出在截图上了,可是翻看了截图的方法并没有什么设置分辨率的方法,查询资料大部分都是告诉获取到图片在对图片进行处理,这样也太麻烦了。
4.最后偶然的灵光一现,能不能在chrome 浏览器加载静态页面时就改变他的分辨率,并且在进行截图时是全屏截图,这样截出来的图片是不是更加清晰。
解决方案:
首先去查询资料,在查找中偶然看见了一个option的设置--force-device-scale-factor=2.0
专业名词解释:覆盖浏览器UI和内容的设备比例因子。
。。。。。。。。这是什么东东。。。。。
使用ChatsNow查询:
抱着试试的态度,我在代码中添加了
options.add_argument(f"--force-device-scale-factor=2.0")
之后修改了参数值。激动的心,颤抖的手:成功修改了图片的分辨率,图片更加清晰了。
最后十分感觉ChatsNow,它在edge和chrome插件商店都有上线,可以免费领取次数,在我们查找问题给与的答案十分准确哦。