目标 1. 掌握窗口截图方法 2. 熟悉验证码处理的方式 思考:如果自动化测试脚本运行时出现了异常,该如何定位问题? 1. 窗口截图 说明:把当前操作的页面,截图保存到指定位置 1.1 为什么要窗口截图? 自动化脚本是由程序去执行的,因此有时候打印的错误信息并不是十分明确。如果在执行出错的时候 对当前窗口截图保存,那么通过图片就可以非常直观地看到出错的原因。 1.1 窗口截图的方法 说明:在Selenium中,提供了截图方法,我们只需要调用即可
方法: driver.get_screenshot_as_file(imgpath) imgpath:图片保存路径 1.1 案例 需求:打开‘注册A.html’页面,完成以下操作 1). 填写注册信息 2). 截图保存 1.1 示例代码 driver.find_element_by_id("userA").send_keys("admin") driver.get_screenshot_as_file("./img/img01.jpg") 1. 验证码 说明:一种随机生成的信息(数字、字母、汉字、图片、算术题)等为了防止恶意的请求行为,增加应用的 安全性。 为什么要学习验证码? 在Web应用中,大部分系统在用户登录注册的时候都要求输入验证码,而我们在设计自动化测试脚本的时候, 就需要面临处理验证码的问题。 1.1 验证码的处理方式 说明:Selenium中并没有对验证码处理的方法,在这里我们介绍一下针对验证码的几种常用处理方式
方式: 1). 去掉验证码 (测试环境下-采用) 2). 设置万能验证码 (生产环境和测试环境下-采用) 3). 验证码识别技术 (通过Python-tesseract来识别图片类型验证码;识别率很难达到100%) 4). 记录cookie (通过记录cookie进行跳过登录) 提示 1. 去掉验证码、设置万能验证码:都是开发来完成,我们在这里不做讲解 2. 验证码识别技术:成功率不高,验证码种类繁多,不太适合 3. 记录cookie:比较实用,我们对它进行下讲解 1. cookie cookie是什么? 1. Cookie是由Web服务器生成的,并且保存在用户浏览器上的小文本文件,它可以包含用户相关的信息。 2. Cookie数据格式:键值对组成(python中的字典) 3. Cookie产生:客户端请求服务器,如果服务器需要记录该用户状态,就向客户端浏览器颁发一个Cookie 数据 4. Cookie使用:当浏览器再次请求该网站时,浏览器把请求的数据和Cookie数据一同提交给服务器,服务器检 查该Cookie,以此来辨认用户状态。 1.1 cookie的应用场景 1. 实现会话跟踪,记录用户登录状态 2. 实现记住密码和自动登录的功能 3. 用户未登录的状态下,记录购物车中的商品 1. Selenium操作cookie 1.1 案例 需求:使用cookie实现跳过登录 1). 手动登录百度,获取cookie 2). 使用获取到的cookie,达到登录目的,然后就可以执行登录之后的操作 案例实现步骤分析 BDUSS是登录百度后的唯一身份凭证(*.baidu.com),拿到BDUSS就等于拿到帐号的控制权,通行贴吧、知道、百科、文库、空间、百度云等百度主要产品。
1. 登录baidu,登录成功后抓取 (BDUSS) 2. 使用add_cookie()方法,添加 (BDUSS)键和值 3. 调用刷新方法 driver.refresh() 1.1 示例代码 [AppleScript] 纯文本查看 复制代码 rom 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. 窗口截图、验证码总结 1. 窗口截图的方法? 2. 验证码常用的处理方式? 3. Selenium操作cookie的方法? |