Selenium截图:巧妙去除烦人的滚动条
Selenium截图时,经常会捕捉到页面右侧的滚动条,影响截图美观和实用性。本文提供一种高效的解决方案,解决Selenium截图包含滚动条的问题。
以下代码片段展示了问题所在:
from selenium import webdriver from selenium.webdriver.chrome.options import Options chrome_options = Options() chrome_options.add_argument('--headless') chrome_options.add_argument('--disable-gpu') net_driver = webdriver.Chrome(options=chrome_options) net_driver.get("http://emweb.securities.eastmoney.com/f10_v2/companysurvey.aspx?code=sh601933&type=web") net_driver.set_window_size(1280, 2000) net_driver.save_screenshot("d:/1.png")
运行后,截图包含滚动条。问题根源在于页面内容高度超过了set_window_size
设置的窗口高度(2000像素),导致滚动条出现。
解决方法:减少窗口宽度。滚动条宽度通常为16像素,我们可以尝试减少窗口宽度16像素来消除滚动条。改进后的代码如下:
from selenium import webdriver from selenium.webdriver.chrome.options import Options chrome_options = Options() chrome_options.add_argument('--headless') chrome_options.add_argument('--disable-gpu') net_driver = webdriver.Chrome(options=chrome_options) net_driver.get("http://emweb.securities.eastmoney.com/f10_v2/CompanySurvey.aspx?code=SH601933&type=web") net_driver.set_window_size(1280 - 16, 2000) # 减少窗口宽度16像素 net_driver.save_screenshot("d:/1.png")
此方法有效去除滚动条,获得更清晰的截图。但该方法为经验性方法,特殊情况下可能需要调整减少的像素值。更完善的方案应精确获取页面内容高度,并根据高度与窗口高度的差值动态调整窗口大小。