我设法获得了整个页面,没有使用来自here 的代码的迭代、键或向下翻页或 lambda 函数,并且只更改了屏幕尺寸尺寸。
问题是,至少对于您的网页而言,必须重新调整(扩展)宽度以拍摄整个标题的图片,即使这样它也不会占用整个宽度并最终看起来拼接在一起。
标题宽度是简单的纯硒代码中的问题。
(在我的系统上):
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
chrome_options = Options()
chrome_options.add_argument('--headless')
chrome_options.add_argument("--window-size=3200x20800") # ANYTHING MORE THAN 3200 width my pycharm cant cope (Rendering error)
driver = webdriver.Chrome(options=chrome_options, executable_path=r"C:\Users\User\Documents\chromedriver_win32\chromedriver.exe") # webdriver.Chrome(options=options)
outFileName = (r'D:\08102020 Random Work\NewFolder4PythonOut')
driver.maximize_window()
URL = "http://stevens.ekkel.ai"
driver.get(URL) #time.sleep(0.5)
#driver.maximize_window()
driver.get_screenshot_as_file(outFileName+"/"+"capture4.png")
另外,--window-size=3200x20800") 在 Pycharm 无法运行或在 渲染 问题的错误消息中通知我之前,我可以在我的机器上最大程度地制作它(剩余的 ram 空间有限)。但是即使我可以最大运行整个页面,屏幕截图也会像这样,所以我建议你使用@Libin Thomas pytest 代码。
我的 chrome(故意降级到 chrome 89,因为 chrome 90 的 webdriver 尚不存在或我可以找到),也在一个非常高度标记的权威 SO 线程中(here、here 或其他地方 - 我已经读了这么多,但还没有为我们找到一个简单的通用解决方案)我[弄错了吗?还是拿走?那],正如 SO 中高度标记的答案之一所说,Chrome Webdriver 还没有“截取整个网页截图”功能,正如您在图片中看到的那样,但 FireFox 有(我不想用,不能用,已经删除了。RAM)
编辑 18:20 pm
在做了所有这些之后,我意识到我看错了。 ZOOM 正是我所需要的。
我确实设法在驱动程序打开页面后使用driver.execute_script("document.body.style.zoom='10%'") 一口气获得了整个事情的屏幕截图。
(它帮助我理解了为什么即使是您的第一次尝试,以及我成功的向下滚动页面,我们的标题看起来也被拉伸并且比正文的其他部分更窄)。
真正的标题与其他部分相比是巨大的,但至少屏幕截图是真实的并且没有拉伸,或者只是它的中间部分,它是真实的原样标题的全部内容。
(虽然可能不是你想要的)。
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
chrome_options = Options() #
chrome_options.add_argument('--headless')
chrome_options.headless = True
#https://stackoverflow.com/questions/56201707/how-to-take-screenshot-of-youtube-page-without-opening-the-browser-in-python-or
#chrome_options.add_argument("--window-size=4000x5800")
driver = webdriver.Chrome(options=chrome_options, executable_path=r"C:\Users\User\Documents\chromedriver_win32\chromedriver.exe") # webdriver.Chrome(options=options)
#driver.maximize_window()
outFileName = (r'D:\08102020 Random Work\NewFolder4PythonOut')
URL = "http://stevens.ekkel.ai"
driver.get(URL) #time.sleep(0.5)
#driver.maximize_window()
driver.execute_script("document.body.style.zoom='10%'")
driver.get_screenshot_as_file(outFileName+"/"+"capture5.png")
我希望我在一些小的方面有所帮助,即使不是你想要的方式。