窗口截图

  自动化用例是由程序去执行的,因此有时候打印的错误信息并不十分明确。如果在脚本执行出错的时候能对当前窗口截图保存,那么通过图片就可以非常直观地看出出错的原因。WebDriver提供了截图函数get_screenshot_as_file()、save_screenshot()、get_screenshot_as_png、get_screenshot_as_base64四种方法来截取当前窗口。

get_screenshot_as_file()

  该方式很简单,通过driver获取该方法,将截图要保存的路径写入就好,首先建立一个Picture文件夹目录,为了方便存储管理截图的图片。代码如下:

from selenium.webdriver import Chrome
from time import sleep # 访问百度
driver = Chrome("C:\Program Files (x86)\Google\Chrome\Application\chromedriver.exe")
driver.get("https://www.baidu.com/") driver.find_element_by_id("kw").send_keys("selenium")
sleep(2)
# 保存图片至文件夹中
driver.get_screenshot_as_file("D:\\PythonProject\\Test\\Picture\\baidu.jpg")
driver.quit()

  当我们运行上述程序时,我们发现有一个Warning警告,告诉我们建议保存图片时用”.png“格式保存,但不影响正常流程保存图片。如下图所示。

  Warning警告提示如下:UserWarning: name used for saved screenshot does not match file type. It should end with a `.png` extension
"type. It should end with a `.png` extension", UserWarning)

优化一下用以.png格式保存图片。两次保存皆成功!

save_screenshot()

  save_screenshot()使用方法与上述get_screenshot_as_file()差不多。我们直接来看实例。代码如下:

from selenium.webdriver import Chrome
from time import sleep # 访问百度
driver = Chrome("C:\Program Files (x86)\Google\Chrome\Application\chromedriver.exe")
driver.get("https://www.baidu.com/") driver.find_element_by_id("kw").send_keys("selenium")
sleep(2) # save_screenshot保存图片
driver.save_screenshot("D:\\PythonProject\\Test\\Picture\\baidu2.png")
driver.quit()

get_screenshot_as_png和get_screenshot_as_base64 

  这两个平时并不常用,大家可大体了解一下。get_screenshot_as_png是获取二进制数据流,get_screenshot_as_base64是获取base64编码原始数据,实际工作实践中如遇到再总结整理。

关闭浏览器

  WebDriver提供了两种quit()和close()方法,quit()是退出相关的驱动程序和关闭所有窗口,close()是用来关闭当前窗口。例多窗口的处理,在用例执行的过程中

打开了多个窗口,我们想要关闭其中的某个窗口,这时就要用到close()方法进行关闭了。

  我们举个栗子看一下,close()与quit()有什么区别。代码如下:

from selenium.webdriver import Chrome
from time import sleep # 访问百度
driver = Chrome("C:\Program Files (x86)\Google\Chrome\Application\chromedriver.exe")
driver.get("https://www.jd.com/") # 查看当前window handle
indexwindow = driver.current_window_handle
print(indexwindow)
print('\n') driver.find_element_by_link_text("家用电器").click()
sleep(2) #循环遍历找到第一个window,再打开一个“手机”页面
for handle in driver.window_handles:
if handle == indexwindow:
driver.find_element_by_link_text("手机").click()
sleep(2)
# 查看所有window handles
print(driver.window_handles)
print('\n') # 关闭当前窗口
driver.close() # 查看现在的所有window handles,可看到只是关闭了最开始的一个window,其他两个window还在
print(driver.window_handles)
print('\n') # 关闭所有窗口,退出相关的驱动程序
driver.quit()

  上述代码运行结果可看出close()只关闭了最开始打开的一个window,后面打开的两个仍在。如下图所示:

  大家可以动手试试。亲自实践一下记忆更加深刻哦~~~

Selenium3 + Python3自动化测试系列十二——窗口截图与关闭浏览器的更多相关文章

  1. Selenium3 + Python3自动化测试系列十——调用JavaScript代码

    调用JavaScript代码 一.调用JavaScript代码方法 Selenium在对浏览器操作时会有自动化代码中不稳定的部分,经常出错的部分,可以将这部分对网页元素进行操作的代码换成对应的Java ...

  2. Selenium3 + Python3自动化测试系列七——多窗口切换

    多窗口切换 在页面操作过程中有时候点击某个链接会弹出新的窗口,这时就需要主机切换到新打开的窗口上进行操作. WebDriver提供了switch_to.window()方法,可以实现在不同的窗口之间切 ...

  3. Selenium3 + Python3自动化测试系列三——控制浏览器操作

    控制浏览器操作 控制浏览器窗口大小 在测试过程中,我们在打开浏览器后,根据需求可自定义调整浏览器的尺寸大小.WebDriver提供了set_window_size()方法来设置浏览器的大小. 如果页面 ...

  4. Selenium3 + Python3自动化测试系列六——等待方式

    等待 一.等待是什么,为什么要等待 在做自动化测试,设计测试用例的时候,有时下一步的操作会依赖上一步的结果或者内容,上一步操作成功之后才能进行下一步操作等, 这时候,我们就需要使用等待,来判断上一步操 ...

  5. Selenium3 + Python3自动化测试系列二——selenium元素定位

    一.selenium元素定位 Selenium对网页的控制是基于各种前端元素的,在使用过程中,对于元素的定位是基础,只有准去抓取到对应元素 才能进行后续的自动化控制,我在这里将对selenium8种元 ...

  6. Selenium3 + Python3自动化测试系列五——常用断言Assertion

    断言Assertion 验证应用程序的状态是否同所期望的一致. 常见的断言包括:验证页面内容,如标题是否为X或当前位置是否正确,或是验证该复选框是否被勾选. selenium 提供了三种模式的断言:a ...

  7. Selenium3 + Python3自动化测试系列一——安装Python+selenium及selenium3 浏览器驱动

    一.安装Python https://www.python.org/downloads/ 验证Python是否安装成功.打开Windows命令提示符(cmd),输入python,回车 注意:在安装的过 ...

  8. Selenium3 + Python3自动化测试系列八——警告框处理和下拉框选择

    警告框处理 在WebDriver中处理JavaScript所生成的alert.confirm以及prompt十分简单,具体做法是使用 switch_to.alert 方法定位到 alert/confi ...

  9. Selenium3 + Python3自动化测试系列四——鼠标事件和键盘事件

    一.鼠标事件 在 WebDriver 中, 将这些关于鼠标操作的方法封装在 ActionChains 类提供. ActionChains 类提供了鼠标操作的常用方法. ActionChains 类的成 ...

随机推荐

  1. 百度网盘不限速-Motrix

    目录: Windows 下使用  Motrix Mac 下使用 BaiduNetdiskPlugin-macOS Mac 下使用 Motrix Windows 系统  Motrix 1. Google ...

  2. 安装vue开发环境→安装淘宝镜像的时候报错

    问题: npm WARN deprecated socks@1.1.10: If using 2.x branch, please upgrade to at least 2.1.6 to avoid ...

  3. FastJSON 远程执行漏洞,速速升级!

    相信大家用 FastJSON 的人应该不少,居然有漏洞,还不知道的赶紧往下看,已经知道此漏洞的请略过-- 2019年6月22日,阿里云云盾应急响应中心监测到FastJSON存在0day漏洞,攻击者可以 ...

  4. jq表单提交加正则验证

    验证方法:姓名,手机,邮箱这些,鼠标点击移走用input的失去焦点blur事件.若为空,给input下方加提示消息. html: input框是引用bootstrap的css <div clas ...

  5. Adapter的实现

    Adapter概念: Adapter是连接后端数据和前端显示的适配接口,是数据和UI(View)之间一个重要的纽带.在常见的View(ListView, GridView)等地方都需要用到Adapte ...

  6. NOIP2016D1T3 换教室 (概率DP)

    NOIP2016D1T3 换教室 题目大意:有n个时间段,每个时间段i有两个教室a[i],b[i]可以上课,如果不申请换教室就在教室a[i]上课,如果换教室就在b[i]上课.你最多只能换m次教室.教室 ...

  7. Solr添加索引

    发送请求: http://localhost:8080/solr/update/?stream.body= <delete><id>id值</id></del ...

  8. windows 安装yaml支持和pytest支持等

    打开cmd 输入pip install pyyaml    #yaml文件支持 输入pip install pytest     #pytest框架支持 输入pip install requests  ...

  9. Pythonf反射

    Python中,反射有4个方法.分别是:hasattr().getattr().setattr()和delattr(). hasattr() 定义 hasattr()函数用于判断对象是否包含对应的属性 ...

  10. SQL语句计算经纬度距离

    二: SQL语句计算经纬度距离 SELECT id, ( 6371* acos( cos( radians(37) ) * cos( radians( lat ) ) * cos( radians( ...