首页 > 其他分享 >Selenium20--截图操作

Selenium20--截图操作

时间:2022-12-17 11:55:59浏览次数:47  
标签:Selenium20 截图 浏览器 -- selenium driver 截屏 网页

为什么要截屏

  • 截屏:就是把当前屏幕上浏览器窗口内的网页或某个特定的网页区域截图保存为图片的过程
  • 为什么要截屏?简单地说,主要是为了保留证据。
    • 截图帮助我们了解应用的流程,并检查它是否有相应的行为
    • 有助于执行交叉浏览测试,因为用户需要查看执行报告
    • 捕获失败测试的屏幕截图,方便复现Bug

何时要截屏

  • 截屏应用场景:跟踪脚本运行后网页状态,或运行脚本出现错误或失败时,进行截屏操作
    • 记录操作步骤执行后界面状态
    • 断言失败
    • 定位元素错误
    • 弹出框没有出现

selenium截屏

  • selenium中提供截屏操作方法
  • 注意:图片完整名称必须包含路径和后缀,只支持png格式。
    • 路径支持相对路径和绝对路径
driver.save_screenshot(r'D:\a.png')
driver.find_element(By.ID,"search").screenshot(r'.\b.png')
"""
	浏览器窗口最大化
	打开ECshop前台首页
	对整个浏览器窗口截屏
	对网页的右侧商品信息区,做区域截屏
	设置窗口尺寸大小为宽2000px高3000px
	对整个浏览器窗口截屏
"""
import os

from selenium import webdriver
from time import sleep
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.select import Select

driver = webdriver.Firefox() # 启动浏览器
driver.maximize_window() # 设置浏览器为最大化
print(driver.get_window_size()) # 打印当前浏览器尺寸
driver.get('http://localhost/upload/index.php') # 打开前台首页
a = r'D:\screenshots' # 定义一个变量存储目录地址
if not os.path.exists(a): # 如果目录不存在
    os.mkdir(a) # 新建文件夹
driver.save_screenshot(r'D:\screenshots\a1.png')
driver.find_element(By.CLASS_NAME,"AreaR").screenshot(r'D:\screenshots\a2.png')
driver.set_window_size(2000,3000)
driver.save_screenshot(r'D:\screenshots\a3.png')
driver.quit()

对浏览器窗口截屏

  • 不截浏览器标题栏、地址栏、系统任务栏、只截浏览器的网页部分
  • 如果当前屏幕有滚动条,只截取当前屏幕上显示的部分,不截取完整网页,需要先把浏览器窗口尺寸修改为比网页尺寸大,然后再截屏就可以截取完整网页
  • 有多frame的情况下,不论是否切换frame,都不影响对整个浏览器窗口截屏
  • 多个浏览器窗口情况下,只对当前一个窗口截屏

对页面元素截屏

  • 不论窗口多大,都可以针对页面元素截取该元素尺寸区间的完整范围
  • 有多个frame的情况下,切换到frame后对body进行元素定位,再截图可以截取一个子网页的内容


消息框截图

  • selenium截屏功能限制:默认的截屏方法无法对消息框截图。

  • 消息框截图:Pillow库是一个Python的第三方的图像处理库。

    • 安装Pillow库
    pip install pillow
    
    • 导入模块
    from PIL import imageGrab
    # imageGrab 模块用于将当前屏幕的内容或者剪切板上的内容拷贝到PIL图像内存
    
    • 实例化对象
    image = imageGrab.grab()
    
    • 保存截图
    image.save(文件名)
    # 文件名必须包含路径和后缀,一般用png格式
    



标签:Selenium20,截图,浏览器,--,selenium,driver,截屏,网页
From: https://www.cnblogs.com/sean-test/p/16988796.html

相关文章

  • 章鱼
    章鱼人们传说深海有巨型章鱼,会故意把船只抓住,拖入海底,十分可怕。但其实这种传说并不太可靠。目前,人类发现的最小的章鱼是北太平洋巨型章鱼,臂展4.3米,重大约15公斤,即使......
  • Math类
    Math类包含用于执行基本数学运算的方法,如初等指数、对数、平方根和三角函数。隶属于java.lang包,该包由JVM自动导入类定义publicfinalclassMath(该类为最终类,不可被......
  • dijkstra最短路代码模板更新
     fromcollectionsimportdefaultdictfromheapqimportheappush,heappopdefdijkstra(edges,start_node,end_node):graph=defaultdict(dict)f......
  • 记一道动态规划题
    我的思路还是太拘束了。这道题真是非常好的一道题。我的思路被拘束在内层循环必须是题目会提供物品了,它这个worddict根本不是物品,得自己创造出物品来,worddict只是做一下判......
  • git进阶
    TableofContentsgithub合并add和commit版本穿梭(回退commit)troubshotgit的三种状态恢复gitlog标莶gitstashgitblamea.txt起别名:gitconfig–global......
  • 高级前端进阶(七)
    最近行程码下线了,核酸检测也取消了,但是新冠病毒仍然存在,加上也是流感爆发时期,大家注意防护!!!阳性无症状,你可能并没有真的感染新冠,新冠病毒是比普通流感病毒要厉害的,会导致发......
  • GIt分布式管理工具
    Git(分布式版本控制工具)Git的学习是不依赖我们前面学习的知识,就算没有学习java也可以学习Git就是一个类似于百度云盘的仓库重点是要掌握使用idea操作Git,企业用的最多,一般......
  • 【书】大概看过-2022年
    更新时间:2022年12月17日共计:15本TheNon-Designer'sDesignBook阅读时长开始时间2021年12月25日结束时间2022年1月7日约14天个人简......
  • 图书管理系统、聚合函数、分组查询、F与Q查询
    目录图书管理系统1.表设计2.首页搭建、展示书籍的添加书籍编辑书籍删除聚合函数MaxMinSumCountAvg分组查询按照表分组按照字段分组F与Q查询F查询Q查询逗号默认是and|是or~......
  • 最近有个需求我用的开源的db-scheduler
    https://github.com/kagkarlsson/db-scheduler整体给我的感受就是比quartz要轻量级,但有的地方还是不是太满意,比如我想实现用这个周期去跑相关任务,而后其handler只能是在......