zoukankan      html  css  js  c++  java
  • Selenium执行cdp命令,driver.execute_cdp_cmd用法

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

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

    使用方法,示例:

    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编码,将编码解码成二进制后可以保持为图片。

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

  • 相关阅读:
    centos 安装mysql
    mysql中文排序
    在Centos中yum安装和卸载软件的使用方法
    gcc升级方法
    tar命令
    wget命令
    php7安装及和php5的共存
    PHP SESSION 保存到数据库
    setTimeout延时0毫秒的作用和问题
    css display visibility
  • 原文地址:https://www.cnblogs.com/superhin/p/11481910.html
Copyright © 2011-2022 走看看