我们在使用selenium测试过程中,可使用截屏功能将用例执行失败的画面截图保存,方便测试执行结束后查看并定位问题。

以下介绍两种截屏方法:

对当前浏览器窗口截屏

使用selenium自带的get_screenshot_as_file()方法

截图成功后返回True,如果发生了IOError异常,会返回False。

# encoding=utf-8
import unittest
import time
from selenium import webdriver class VisitSogouByIE(unittest.TestCase):
def setUp(self):
# 启动IE浏览器
#self.driver=webdriver.Firefox(executable_path="e:\\geckodriver")
self.driver = webdriver.Ie(executable_path="d:\\driver\IEDriverServer") def test_captureScreenInCurrentWindow(self):
url = "http://www.sohu.com"
# 访问搜狐首页
self.driver.get(url)
try:
'''
调用get_screenshot_as_file(filename)方法,对浏览器当前打开页面
进行截图,并保为G盘下的screenPicture.png文件。
'''
result=self.driver.get_screenshot_as_file(r"g:\screenPicture.png")
print result
except IOError, e:
print e def tearDown(self):
# 退出IE浏览器
self.driver.quit() if __name__ == '__main__':
unittest.main()

使用PIL模块调用操作系统API截桌面全屏

PIL:Python Imaging Library,已经是Python平台事实上的图像处理标准库了。PIL功能非常强大,但API却非常简单易用。

PIL非python内置模块,使用前需先安装PIL安装包→ pip install PIL

from PIL import ImageGrab
im=ImageGrab.grab()
im.save("1.jpg","jpeg")

要想了解PIL的更多使用,参请见:https://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000/00140767171357714f87a053a824ffd811d98a83b58ec13000

selenium常用的API(一)截屏的更多相关文章

  1. selenium常用的API

    打开浏览器 driver.get("http://www.baidu.com") 最大化浏览器 driver.maximize_window() 关闭浏览器 driver.quit ...

  2. VB用API模拟截屏键PrintScreen

    很多人用 SendKeys "{PRTSC}" 模拟截屏键 PrintScreen 的时候提示<错误:'70' 拒绝的权限>,于是经常遇到人问...干脆写下来 '声明 ...

  3. selenium常用的API(七)判断元素是否可见

    web页面不可见的元素虽不在页面上显示,但是存在于DOM树中,这些元素webdriver也能找到. element.is_displayed()方法可以判断元素是否在页面上显示,如果显示返回True, ...

  4. Java编程语言下Selenium 利用Robot自己编写截屏方法

    import java.awt.Robot; import java.awt.event.KeyEvent; import java.util.concurrent.TimeUnit; import ...

  5. selenium常用的API(六)浏览器窗口切换

    当使用selenium webdriver进行自动化测试打开多个窗口的时候,可能需要在不同的窗口间进行切换,webdriver提供的获取浏览器窗口句柄.切换句柄的方法如下: 获取当前窗口句柄 driv ...

  6. selenium常用的API(五)获取title、刷新、前进和后退

    获取网页title的属性值 #encoding=utf-8 from selenium import webdriver import unittest import time class Visit ...

  7. selenium常用的API(四)设置get方法最大加载时间

    我们在进行自动化测试的时候,使用get方法打开页面时会等到页面完全加载完才会执行后续操作, 有时我们需要的元素已加载完成,而部分JS未加载完导致加载时间很长,这无疑增加了自动化测试的时间, 针对此情况 ...

  8. selenium常用的API(三)获取网页title、html源码

    获取网页title 获取页面title的方法可以直接用driver.title获取到,然后可以把获取到的结果用做断言. #encoding=utf-8 from selenium import web ...

  9. selenium常用的API(二)浏览器窗口设置

    浏览器窗口最大化 # encoding=utf-8 from selenium import webdriver driver = webdriver.Ie(executable_path=" ...

随机推荐

  1. 【Python学习之六】文件操作

    环境 虚拟机:VMware 10 Linux版本:CentOS-6.5-x86_64 客户端:Xshell4 FTP:Xftp4 python3.6 一.文件的打开与关闭 使用open函数,可以打开一 ...

  2. Android中的数据结构

    数据结构在Android中也有着大量的运用,这里采用数据结构与源代码分析相结合,来认识Android的数据结构 线性表 线性表可分为顺序存储结构和链式存储结构 顺序存储结构-ArrayList 通过对 ...

  3. 如何立即回收内存C#

    C#如何立即回收内存 1.把对象赋值为null 2.立即调用GC.Collect();   注意:这个也只是强制垃圾回收器去回收,但具体什么时候执行不确定.    代码:   [System.Runt ...

  4. 问题二:appium 搞定权限弹框的一个小办法

    public void permission() { for (int i=0; i <= 10; i++) { if (getPageSource().contains("允许&qu ...

  5. Mysql中的读锁,写锁,乐观锁及事务隔离级别和并发问题

    mysql读锁,写锁,乐观锁 读锁,也叫共享锁(shared lock) SELECT * FROM table_name  WHERE ...  LOCK IN SHARE MODE 写锁,也叫排他 ...

  6. K8S从入门到放弃系列-(16)Kubernetes集群Prometheus-operator监控部署

    Prometheus Operator不同于Prometheus,Prometheus Operator是 CoreOS 开源的一套用于管理在 Kubernetes 集群上的 Prometheus 控 ...

  7. MySQL中主键id不连贯重置处理办法

    MySQL中有时候会出现主键字段不连续,或者顺序乱了,想重置从1开始自增,下面处理方法 先删除原有主键,再新增新主键字段就好了 #删除原有自增主键 ALTER TABLE appraiser_info ...

  8. django中的media

    我们用Django写一个网站,可能会需要将用户注册时的头像展示到页面上,当然一开始学的用户上传头像文件都是在项目目录下的,那我们在网页上获取这个头像文件是获取不到的,此时我们需要配置一下media,才 ...

  9. flask框架(四)——flask CBV视图类解析

    CBV视图类的两种基本写法 #第一种写法class IndexView(views.View): methods = ['GET'] decorators = [auth, ] def dispatc ...

  10. PAT(B) 1050 螺旋矩阵(Java:24分)

    题目链接:1050 螺旋矩阵 (25 point(s)) 题目描述 本题要求将给定的 N 个正整数按非递增的顺序,填入"螺旋矩阵".所谓"螺旋矩阵",是指从左上 ...