Selenium操作页面截图

我们执行UI自动化操作时,大多数时间都是不在现场的,出现错误时,没有办法第一时间查看到,这时我们可以通过截图当时出错的场景保存下来,后面进行查看报错的原因,Selenium中提供了几种截图的方法

方式一:

get_screenshot_as_base64() 整个函数,获取当前屏幕页面截图

from selenium import webdriver
import base64  # 导入bsse64


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(file_path)是属selenium自带的截图函数,支持截图后缀是.png格式


from selenium import webdriver
driver = webdriver.Chrome()
driver.get('https://www.baidu.com/')

# 保存图片到本地
driver.save_screenshot('tu.png')

方式三:

get_screenshot_as_file(file_file)截图方式与"save_screenshot()"类似,图片格式只能保存为.png格式

# coding:utf-8
from selenium import webdriver
driver = webdriver.Chrome()
driver.get('https://www.baidu.com/')

# 截图保存在本地
driver.get_screenshot_as_file('tu2.png')

方式四:

get_screenshot_as_png() 通过二进制的方式进行保存图片

from selenium import webdriver
driver = webdriver.Chrome()
driver.get('https://www.baidu.com/')

# 截图保存在本地
file = driver.get_screenshot_as_png()
# 将二进制保存成图片形式
file = open('1.png', "wb")
file.write(file)

截图长图

上述截图方法中均是截取的当前页面的图片,那么如果我想要整个浏览器显示的内容全部截图下来怎么操作呢?其实方法一样的,我们只需要获取到浏览器的高度,然后就可以将截图全部都截取下来了

# 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')

  • 6
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值