一、窗口截图
目的:
当程序运行出错时,通过截图文件能够更直观的知道具体是哪个操作步骤出错
把图片保存至指定位置:
截图方法:driver.get_screenshot_as_file(filename)
截图的文件名必须是以PNG结尾
filename中的文件目录必须手动创建
from selenium import webdriver
dr = webdriver.Chrome()
dr.get(r'https://www.baidu.com/')
try:
# 在搜索框输入123
dr.find_element_by_id('kw').send_keys('123')
# 点击‘百度一下’按钮
dr.find_element_by_id('suu').click()
except Exception as e:
# 截图
dr.get_screenshot_as_file('error.png')
raise e
dr.quit()
二、验证码处理
2.1 定义
验证码就是指一种随机生成的信息(数字、字母、汉字、图片、算术题)等为了防止恶意的请求行为,增加应用的安全性。
自动化过程中也是需要进行注册或者登陆的操作,所以需要处理验证码。
2.2 处理方式
-
去掉验证码 由开发操作 , 用在测试环境
-
设置万能验证码 由开发操作, 一般也只使用在测试环境,
-
验证码识别技术 由于技术难度高,识别率很难达到100%, 一般不建议使用
-
记录COOKIE 通过记录cookie来跳过登陆的操作。
2.3 selenium操作cookie
driver.get_cookie(name) 获取指名称的cookie信息 返回的是一个字典
driver.get_cookies() 获取的是所有cookie的信息, 返回的是一个列表
driver.add_cookie(dict_cookie) 往浏览器驱动增加cookie, dict_cookie是一字典
import time
from selenium import webdriver
dr = webdriver.Chrome()
dr.get('https://www.baidu.com/')
dr.maximize_window()
# 打印所有cookie
print('all:', dr.get_cookies())
# 指定名称打印
print('BAIDUID', dr.get_cookie('BAIDUID'))
dict_cookie = {
'name':'BDUSS',
'value':'lMzeDBtQUN0bUJ•SkJZcVJrNUNb2E-tG9hW'
}
time.sleep(5)
# 添加到浏览器cookie中
dr.add_cookie(dict_cookie)
dr.refresh()
time.sleep(5)
dr.quit()
注意事项:如何确认哪个cookie是用来控制用户权限的
可以问开发同学
针对登陆的前后的cookie进行对比,比登陆之前多的cookie都可以用来使用控制用户权限。
手动登陆之后不能退出,退出之后就相当于cookie无效了