Fornece uma implementação de corte de imagens longas de páginas da web em Selenium

Métodos pesquisados ​​recentemente para controlar a API do Chrome para capturas de tela automáticas. Então eu vi o artigo do blog https://www.cnblogs.com/superhin/archive/2004/01/13/11481910.html . O artigo dizia que o Selenium não suporta screenshots de toda a página.A razão é que embora o Chrome forneça o comando "Capture full size screenshot" Run Command nas ferramentas do desenvolvedor, ele não fornece executeCdpCommando comando no CDP .
Para resolver este problema, retirei o código-fonte do Chromium e, em seguida, vi que este "Capture full size screenshot" realmente fez uma simulação de dispositivo e ajustei a altura para ser igual à altura da página e, em seguida, tirei uma captura de tela da tela atual.
Também prestei atenção às comunidades de programação estrangeiras e descobri que esse é basicamente o caso no exterior. Uma simulação de dispositivo é configurada temporariamente e, em seguida, uma captura de tela da tela atual é tirada. Depois que a foto é tirada, a simulação de dispositivo é desligada .
Nesse caso, use a linguagem Python para operar da seguinte maneira:

from selenium import webdriver
from time import sleep
import base64

# 接入既有的浏览器进程
options = webdriver.ChromeOptions()
options.debugger_address = "127.0.0.1:9222"
driver = webdriver.Chrome(options=options)

# 取出页面的宽度和高度
page_width = driver.execute_script("return document.body.scrollWidth")
page_height = driver.execute_script("return document.body.scrollHeight")

# 直接开启设备模拟,不要再手动开devtools了,否则截图截的是devtools的界面!
driver.execute_cdp_cmd('Emulation.setDeviceMetricsOverride', {
    
    'mobile':False, 'width':page_width, 'height':page_height, 'deviceScaleFactor': 1})

# 执行截图
res = driver.execute_cdp_cmd('Page.captureScreenshot', {
    
     'fromSurface': True})

# 返回的base64内容写入PNG文件
with open('hao123.png', 'wb') as f:
    img = base64.b64decode(res['data'])
    f.write(img)

# 等待截图完成
sleep(15)

# 关闭设备模拟
driver.execute_cdp_cmd('Emulation.clearDeviceMetricsOverride', {
    
    })

Insira a descrição da imagem aqui

Acho que você gosta

Origin blog.csdn.net/qq_35977139/article/details/111552903
Recomendado
Clasificación