Python selenium chrome control devtools algunas pistas

  1. Dirección de descarga del controlador web Chrome: http://chromedriver.storage.googleapis.com/index.html
    Tenga en cuenta que corresponde a la versión del kernel del navegador nacional (el kernel del navegador Wish 80.0.3987.163 puede usar el controlador web 80.0.3987.106)
    siempre que La versión del kernel del navegador no es inferior a la versión de webdriver. La versión mínima en Nuget es 71, por lo que el navegador QQ no puede ser controlado por C #, y QQ solo tiene la versión 70 del kernel.
  2. Si primero desea abrir el navegador y luego usar selenio para controlar, debe agregar parámetros de inicio al navegador:
twinkstar.exe --remote-debugging-port=9222
  1. Python llama a la inicialización del navegador Star Wish existente
from selenium import webdriver
options = webdriver.ChromeOptions()
options.debugger_address = "127.0.0.1:9222"
driver = webdriver.Chrome(options=options)
  1. ¡Utilice la función de captura de pantalla incorporada de devtools! (Compatible con el kernel 59, consulte https://developers.google.com/web/updates/2017/04/devtools-release-notes para obtener más detalles )
import base64
res = driver.execute_cdp_cmd('Page.captureScreenshot', {
    
    })
 
with open('hao123.png', 'wb') as f:
    img = base64.b64decode(res['data'])
    f.write(img)
  1. El método nativo de JS de zoom Flash es Zoom(percentage)donde percentageel recíproco de la ampliación se multiplica por 100. Por ejemplo, hacer zoom 4 veces es 1/4 * 100 = 25.
  2. Después del zoom con Flash, el método nativo de JS para mover el campo de visión es Pan(x_position,y_position,mode).
    x_positionEl parámetro es el número de abscisas móviles, y el
    y_positionparámetro negativo es el número de ordenadas móviles. El
    modeparámetro negativo no está claro temporalmente. Primero complete 1 para indicar la unidad de coordenadas, pero cuando el valor es "0", el número de píxeles es la unidad Cuando es "1", la unidad es el porcentaje.
  3. El método nativo de JS para controlar la transparencia de todo el Flash.
    TSetProperty("_root",6,50)
    El último parámetro es la opacidad de 0 a 100, 0 significa sin pantalla y 100 significa completamente opaco.
  4. El comando CDP para configurar el dispositivo analógico es
'Emulation.setDeviceMetricsOverride', {
    
    
  mobile: true,
  width: 412,
  height: 732,
  deviceScaleFactor: 2.625,
}
  1. El comando para python selenium para especificar el área de intercepción es
clip = driver.execute_script('return {x: 0, y: 0, width: 4320, height: 7680, scale: 1};', '') # 模拟的是竖屏
res = driver.execute_cdp_cmd('Page.captureScreenshot', {
    
    'clip': clip})
  1. En resumen, las operaciones que Python debe realizar son (cortar la imagen de alta definición de la interfaz de selección de recorrido de la página Xiaohuaxian (la que está en el medio))
from selenium import webdriver
import base64

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

# 直接开启设备模拟,不要再手动开devtools了,否则截图截的是devtools的界面!
driver.execute_cdp_cmd('Emulation.setDeviceMetricsOverride', {
    
    'mobile':False, 'width':4320, 'height':7680, 'deviceScaleFactor': 1})
# 缩放Flash
driver.execute_script('document.getElementsByTagName("embed")[0].Zoom(100)')
driver.execute_script('document.getElementsByTagName("embed")[0].Zoom(25)')
# Flash缩放后的视野位置微调,还需要完善
driver.execute_script('document.getElementsByTagName("embed")[0].Pan(0,-300,0)') 
# 执行截图
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)

# 关闭设备模拟
driver.execute_cdp_cmd('Emulation.clearDeviceMetricsOverride', {
    
    })
# Flash缩放复原
driver.execute_script('document.getElementsByTagName("embed")[0].Zoom(500)')

Supongo que te gusta

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