如何在 selenium 中获取网页完整 cookie 横幅的屏幕截图 python
How to get screenshot of the complete cookie banner of webpage in selenium python
enter image description here
我可以获取网页的完整屏幕截图,但不能获取 cookie banner.Can 我是用 selenium 做的,或者我应该使用任何其他工具
要获得完整横幅的屏幕截图,您必须放大横幅,以便所有可滚动的内容都可见。但是,如果您的计算机屏幕分辨率为 1920x1080 或更低,则完整的横幅将不适合您的屏幕,因此在这种情况下您必须在无界面模式下使用浏览器。在这种模式下,您可以将浏览器的大小调整为任何需要的大小。这是工作代码
import time
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.service import Service
options = webdriver.ChromeOptions()
options.add_argument("--headless")
chromedriver_path = '...'
driver = webdriver.Chrome(options=options, service=Service(chromedriver_path))
driver.get('https://www.pcgamer.com/uk/')
time.sleep(2)
# click the button "MORE OPTIONS"
driver.find_element(By.XPATH, "//button[contains(.,'MORE OPTIONS')]").click()
time.sleep(2)
# resize the browser window
driver.set_window_size(1300, 1400)
banner = driver.find_element(By.CSS_SELECTOR, 'div[role=dialog]')
# resize the banner
driver.execute_script("arguments[0].setAttribute('style', 'max-height: 1100px;')", banner)
time.sleep(1)
banner.screenshot('banner_screenshot.png')
这就是您将获得的图像
enter image description here
我可以获取网页的完整屏幕截图,但不能获取 cookie banner.Can 我是用 selenium 做的,或者我应该使用任何其他工具
要获得完整横幅的屏幕截图,您必须放大横幅,以便所有可滚动的内容都可见。但是,如果您的计算机屏幕分辨率为 1920x1080 或更低,则完整的横幅将不适合您的屏幕,因此在这种情况下您必须在无界面模式下使用浏览器。在这种模式下,您可以将浏览器的大小调整为任何需要的大小。这是工作代码
import time
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.service import Service
options = webdriver.ChromeOptions()
options.add_argument("--headless")
chromedriver_path = '...'
driver = webdriver.Chrome(options=options, service=Service(chromedriver_path))
driver.get('https://www.pcgamer.com/uk/')
time.sleep(2)
# click the button "MORE OPTIONS"
driver.find_element(By.XPATH, "//button[contains(.,'MORE OPTIONS')]").click()
time.sleep(2)
# resize the browser window
driver.set_window_size(1300, 1400)
banner = driver.find_element(By.CSS_SELECTOR, 'div[role=dialog]')
# resize the banner
driver.execute_script("arguments[0].setAttribute('style', 'max-height: 1100px;')", banner)
time.sleep(1)
banner.screenshot('banner_screenshot.png')
这就是您将获得的图像