selenium验证码处理之cookie登录
在实际测试中会经常见到登录操作需要验证码验证登录
常见验证有以下几种:
- 验证码登录
- 图片识别
- 图片滑块识别验证
4.简单验证码计算
针对上面的登录验证解决办法有以下几种:
1.让开发去掉验证码(注释掉验证码相关代码)
2.设置万能验证码 (只适用于第一种验证码)
3 .验证码识别技术 (主要针对图片识别)
python的pytesseract库用于验证码识别
4.使用cookie记录登录,自动化脚本绕过验证环节
下面主要介绍使用cookie登录,以博客园为列,其他解决办法后面有时间再进行补充:
博客园登录验证为上图第三种:图片滑块识别验证
博客园登录页面:
第一步:获取cookie
首先编写登录脚本如下:
##登录时记得选择记住密码
1 from selenium import webdriver 2 from time import sleep 3 4 Dirver = webdriver.Chrome() 5 Dirver.maximize_window() 6 Dirver.get("https://account.cnblogs.com/signin") 7 Dirver.implicitly_wait(10) 8 Dirver.find_element_by_id('LoginName').send_keys('username') 9 Dirver.find_element_by_id('Password').send_keys('password') 10 sleep(60) 11 12 #代码运行到此处时,手动点击登录按钮并进行图片滑块验证,完成后,以下代码会获取登录成功后的页面cookie 13 14 cookies = Dirver.get_cookies() 15 print(cookies) 16 Dirver.quit()
第二步:根据获取的cookie进行登录
1 from selenium import webdriver 2 from time import sleep 3 4 5 Dirver = webdriver.Chrome() 6 Dirver.maximize_window() 7 Dirver.get("https://home.cnblogs.com/") 8 Dirver.implicitly_wait(10) 9 Dirver.add_cookie({'name':' ','value':''}) #输入第一步得到的值 10 Dirver.add_cookie({'name':'','value':''}) 11 sleep(10) 12 Dirver.get("https://home.cnblogs.com/") 13 username = Dirver.find_element_by_css_selector('#header_user_right a:nth-child(2) ').text #获取用户名 14 print(username) 15 welcome = Dirver.find_element_by_id('header_user_left').text 16 print(welcome) #获取欢迎字样 17 sleep(3) 18 19 Dirver.quit()
登陆成功后的页面如下:
关于自动化测试中的验证码登录的其他解决办法后续将一一补充
当你试图去用自己的言语去讲清一些事物时,你会明白对此事物的理解是融会贯通还是一知半解