关闭

简单但好用:4种Selenium截图方法了解一下

发表于:2023-9-28 09:08

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:程序员小濠    来源:知乎

  前言
  我们执行UI自动化操作时,大多数时间都是不在现场的,出现错误时,没有办法第一时间查看到,这时我们可以通过截图当时出错的场景保存下来,后面进行查看报错的原因,Selenium中提供了几种截图的方法,小编今天给大家介绍下。
  方法一
  get_screenshot_as_base64()整个函数,获取当前屏幕页面截图。
  我们通过代码编写打开百度页面,然后进行进行通过base64进行截图,截图后再次进行转换成图片保存下来。
  # coding:utf-8
  from selenium import webdriver
  import base64
  driver = webdriver.Chrome()
  driver.get('https://www.baidu.com/')
  # 通过base64进行保存图片
  x = driver.get_screenshot_as_base64()
  image = base64.b64decode(x)
  file = open('1.jpg', "wb")
  file.write(image)
  程序执行完成后,我们直接可以看到图片成功保存在本地。
  方法二
  save_screenshot(filename)是属于Selenium自带的截图函数,其中filename表示图片名称,道理一样,直接打开百度网页进行保存。
  # coding:utf-8
  from selenium import webdriver
  driver = webdriver.Chrome()
  driver.get('https://www.baidu.com/')
  # 保存图片到本地
  driver.save_screenshot('1.png')
  代码执行完成后,发现图片信息已经保存下来了。
  方法三
  get_screenshot_as_file(filename)获取截图信息,其中filename表示图片名称,这里需要注意的是,图片信息只能保存为png格式的,其他的格式,代码会出现报错。
  # coding:utf-8
  from selenium import webdriver
  driver = webdriver.Chrome()
  driver.get('https://www.baidu.com/')
  # 截图保存在本地
  driver.get_screenshot_as_file('1.png')
  方法四
  get_screenshot_as_png() 通过二进制的方式进行保存图片。
  # coding:utf-8
  from selenium import webdriver
  driver = webdriver.Chrome()
  driver.get('https://www.baidu.com/')
  # 截图保存在本地
  x = driver.get_screenshot_as_png()
  # 将二进制保存成图片形式
  file = open('1.png', "wb")
  file.write(x)
  截图长图
  上述截图方法中均是截取的当前页面的图片,那么如果我想要整个浏览器显示的内容全部截图下来怎么操作呢?其实方法一样的,我们只需要获取到浏览器的高度,然后就可以将截图全部都截取下来了。
  # coding:utf-8
  from selenium import webdriver
  import time
  opt = webdriver.ChromeOptions()
  opt.headless = True              # 把Chrome设置成可视化无界面模式
  driver = webdriver.Chrome(options=opt)  # 创建Chrome无界面对象
  driver.get('http://www.51testing.com/html/news.html')
  time.sleep(2)
  # js获取页面的宽高
  height = driver.execute_script("return document.documentElement.scrollHeight")
  # 将浏览器的宽高设置成刚刚获取的宽高
  driver.set_window_size(1960, height)
  time.sleep(3)
  driver.save_screenshot('22.png')
  需要注意的一点是,这里需要将浏览器设置成无页面模式,因为只有无页面形式才可以截全图,不然截的还是当前页面的图片,也就是浏览器的页面显示的。
  执行完成代码后,发现我们已经将长图全部截取下来了。
  总结
  本篇的内容可能对于一些小伙们来说很简单,其实小编主要想介绍如何通过Selenium进行截取长图或者说整个页面的图片,当然如何在公司项目中进行使用,这个可能就需要小伙们根据公司项目进行合理安排,是否有此需求,感谢您的阅读,希望对您有所帮助。
  本文内容不用于商业目的,如涉及知识产权问题,请权利人联系51Testing小编(021-64471599-8017),我们将立即处理
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号