Selenium执行cdp命令,driver.execute_cdp_cmd用法

Chrome自带的开发者工具DevTools功能很是强大。有时候咱们在使用Selenium操做浏览器时须要经过调用一下DevTools的方法来完成一些设置,如模拟移动设备,弱网模拟等等。 Selenium的WebDriver类中有一个execute_cdp_cmd(self, cmd, cmd_args)方法能够用来执行Chrome开发这个工具命令。python

cdp即Chrome DevTools Protocal, Chrome开发者工具协议,API文档可参考:https://chromedevtools.github.io/devtools-protocol/tot/Emulationgit

使用方法,示例:github

import requests
from selenium import webdriver
from time import sleep
import base64

driver = webdriver.Chrome()
driver.get('https://www.hao123.com/')

res = driver.execute_cdp_cmd('Page.captureScreenshot', {})

with open('hao123.png', 'wb') as f:
    img = base64.b64decode(res['data'])
    f.write(img)

sleep(3)
driver.quit()

这个例子是调用cdp中Page类的截图方法,支持png格式和jpeg格式,调用后返回的数据data字段中为图片的base64编码,将编码解码成二进制后能够保持为图片。web

很遗憾的是,虽然Chrome开发者工具前台命令菜单中有Capture full screenshot的命令,以下图,但cdp的方法中无此方法,Selenium3后全部的浏览器都没法全屏截图。 chrome

相关文章
相关标签/搜索