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")
$driver.execute_cdp('Emulation.setDeviceMetricsOverride', {'mobile': false, 'width': page_width, 'height': page_height, 'deviceScaleFactor': 1})
res = $driver.execute_cdp('Page.captureScreenshot', { 'fromSurface': true})
sleep(0.5)
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
$driver.execute_cdp('Emulation.clearDeviceMetricsOverride', {})
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
|