对当前元素进行截图
img_b64 = element.screenshot_as_base64
获取当前元素的base64 encoded string。
element_png = element.screenshot_as_png
获取当前元素的binary data。
element.screenshot('/Screenshots/foo.png')
保存当前元素的截图到.png文件。注意文件路径为绝对路径、以‘.png’结尾。该方法内部先是调用了screenshot_as_png
,再对得到数据进行存储。
截图方法的局限
一直使用的screenshot_as_png
,不知道screenshot_as_base64
是否存在此局限。
网页中过大的图片会有如下两种显示方式:
图片是原始大小,但是图片高度超出了窗口高度,导致窗口中只能显示一部分图片,截图时只会截取在窗口中的部分,超出窗口的部分不会截取。
图片因为要适应窗口大小所以自动缩小,截图时虽然可以截取全部图片,但得到的图片是缩小后的,清晰度要低一些。
解决办法
使用无头模式,并自定义窗口大小,窗口大小应大于图片的原始尺寸,保证窗口在不需要滚动条的情况下显示原始图片。
注意:有头模式下即使自定义窗口很大,也不会超过屏幕的实际分辨率,而无头模式没有此限制。另外窗口过大可能会出现下图所示的错误。
可参考https://www.jianshu.com/p/9f2de09790d7
参考代码:
options = webdriver.ChromeOptions()
options.add_argument('--disable-dev-shm-usage')
options.add_argument('--headless') #无头模式
options.add_argument('--disable-gpu')
options.add_argument('--no-sandbox')
driver = webdriver.Chrome(executable_path="/home/admin/test/chromedriver", chrome_options=options)chrome_options=options)
driver.set_window_size(5000, 5000) # 自定义窗口尺寸
# 具体操作
driver.quit()