Web自动化测试12:Selenium窗口截图验证码处理

Posted 黑马程序员官方

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Web自动化测试12:Selenium窗口截图验证码处理相关的知识,希望对你有一定的参考价值。

更多功能测试以及全套学习路线图均在专栏,↑↑戳进去领取~

👼 Web自动化测试01:认识web自动化在什么项目中适用
👼Web自动化测试02:Web自动化测试工具选择大全
👼Web自动化测试03:Selenium安装配置,详细教程
👼Web自动化测试04:Selenium-API操作之元素定位
👼Web自动化测试05:Selenium-CSS定位
👼Web自动化测试06:元素操作、浏览器操作方法以及获取元素信息
👼Web自动化测试07:Selenium—鼠标操作
👼Web自动化测试08:Selenium—键盘操作
👼Web自动化测试09:Selenium元素等待
👼Web自动化测试10:Selenium下拉选择框、弹出框、滚动条操作
👼Web自动化测试11:Selenium之frame切换、多窗口切换


文章目录


学习目标

我们web自动化的内容,一共分为七个模块。今天开始第二章的学习,Selenium-API操作相关内容。如果你们还想回顾功能测试等等相关内容欢迎关注上方专栏!!!

本文学习目标:

1.掌握窗口截图方法
2.熟悉验证码处理的方式


思考:如果自动化测试脚本运行时出现了异常,该如何定位问题?

一、窗口截图

说明:把当前操作的页面,截图保存到指定位置

1.1 为什么要窗口截图

自动化脚本是由程序去执行的,因此有时候打印的错误信息并不是十分明确。如果在执行出错的时候对当前窗口截图保存,那么通过图片就可以非常直观地看到出错的原因。

1.2 窗口截图的方法

说明:在Selenium中,提供了截图方法,我们只需要调用即可

方法:
driver.get_screenshot_as_file(imgpath) imgpath:图片保存路径

1.3 案例

需求:打开‘注册A.html’页面,完成以下操作
1).填写注册信息
2).截图保存

1.4 示例代码

driver.find_element_by_id("userA").send_keys("admin")
driver.get_screenshot_as_file("./img/img01.jpg")

二、验证码

说明:一种随机生成的信息(数字、字母、汉字、图片、算术题)等为了防止恶意的请求行为,增加应用的安全性。

2.1 为什么要学习验证码?

在Web应用中,大部分系统在用户登录注册的时候都要求输入验证码,而我们在设计自动化测试脚本的时候, 就需要面临处理验证码的问题。

2.2 验证码的处理方式

说明:Selenium中并没有对验证码处理的方法,在这里我们介绍一下针对验证码的几种常用处理方式

方式:
1). 去掉验证码
(测试环境下-采用) 2). 设置万能验证码
(生产环境和测试环境下-采用) 3). 验证码识别技术
(通过Python-tesseract来识别图片类型验证码;识别率很难达到100%) 4). 记录cookie
(通过记录cookie进行跳过登录)

提示

1.去掉验证码、设置万能验证码:都是开发来完成,我们在这里不做讲解
2.验证码识别技术:成功率不高,验证码种类繁多,不太适合
3.记录cookie:比较实用,我们对它进行下讲解

三、cookie

3.1 cookie是什么?

1.Cookie是由Web服务器生成的,并且保存在用户浏览器上的小文本文件,它可以包含用户相关的信息。
2.Cookie数据格式:键值对组成(python中的字典)
3.Cookie产生:客户端请求服务器,如果服务器需要记录该用户状态,就向客户端浏览器颁发一个Cookie
数据
4.Cookie使用:当浏览器再次请求该网站时,浏览器把请求的数据和Cookie数据一同提交给服务器,服务器检
查该Cookie,以此来辨认用户状态。

3.2 cookie的应用场景

1.实现会话跟踪,记录用户登录状态
2.实现记住密码和自动登录的功能
3.用户未登录的状态下,记录购物车中的商品

四、Selenium 操作cookie

说明:Selenium中对cookie操作提供相应的方法

方法:
1.get_cookie(name)- -> 获取指定cookie
name:为cookie的名称
2.get_cookies() --> 获取本网站所有本地cookies

3.add_cookie(cookie_dict) --> 添加cookie

4.1 案例

需求:使用cookie实现跳过登录
1).手动登录百度,获取cookie
2).使用获取到的cookie,达到登录目的,然后就可以执行登录之后的操作

4.2 实现案例步骤分析

BDUSS是登录百度后的唯一身份凭证(*.baidu.com),拿到BDUSS就等于拿到帐号的控制权, 通行贴吧、知道、百科、文库、空间、百度云等百度主要产品。

1.登录baidu,登录成功后抓取 (BDUSS)
2.使用add_cookie()方法,添加 (BDUSS)键和值
3.调用刷新方法 driver.refresh()

4.3 示例代码

from selenium import webdriver import time
driver = webdriver.Firefox() driver.get("https://www.baidu.com") driver.add_cookie('name':'BDUSS','value':'根据实际填写') time.sleep(3)
driver.refresh() time.sleep(3) driver.quit()

小结一下:
1.窗口截图的方法?
2.验证码常用的处理方式?
3.Selenium操作cookie的方法?

以上是关于Web自动化测试12:Selenium窗口截图验证码处理的主要内容,如果未能解决你的问题,请参考以下文章

python3+selenium实现Web自动化5:文件上传,Cookie操作,调用 JavaScript,窗口截图

Selenium UI自动化验证码:识别+输入

selenium后台执行时,设置窗口最大,为啥截图显示的窗口为1024*663

Web自动化测试11:Selenium之frame切换多窗口切换

web自动化测试—selenium游览器多窗口操作

Python3+Selenium3自动化测试-