Selenium save full screenshot

Selenium save full screenshot,第1张

Selenium cdp command

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

def save_full_screen()
      page_width = $driver.execute_script("return document.body.scrollWidth")
      page_height = $driver.execute_script("return document.body.scrollHeight")
      
      # modify device size
      $driver.execute_cdp('Emulation.setDeviceMetricsOverride', {'mobile': false, 'width': page_width, 'height': page_height, 'deviceScaleFactor': 1})
      # capture Full screen
      res = $driver.execute_cdp('Page.captureScreenshot', { 'fromSurface': true})
      sleep(0.5)
      # save base64 data to PNG
      t = Time.now
      filename = t.strftime("%Y%m%d-%H-%M-%S-") <<t.nsec.to_s << ".png"
      File.open("c://full_screen_shot#{filename}.png", 'wb') do |f|
        f.write(Base64.decode64(res['data']))
      end
      # reset device parameter
      $driver.execute_cdp('Emulation.clearDeviceMetricsOverride', {})
      
      # capture view scale screen
      res = $driver.execute_cdp('Page.captureScreenshot', { 'fromSurface': true})
      sleep(0.5)
      File.open("#{SCREEN_SHORT_FOLDER}/view_scale_shot.png", 'wb') do |f|
      f.write(Base64.decode64(res['data']))
      end 
    end

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/569924.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-09
下一篇 2022-04-09

发表评论

登录后才能评论

评论列表(0条)

保存