selenium验证码处理之cookie登录

在实际测试中会经常见到登录操作需要验证码验证登录

常见验证有以下几种:

  1. 验证码登录
  2. 图片识别  

           

  3. 图片滑块识别验证

                  

 

      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()

登陆成功后的页面如下:

 

关于自动化测试中的验证码登录的其他解决办法后续将一一补充

 

posted @ 2019-06-26 16:35  法卡萨多  阅读(1658)  评论(0编辑  收藏  举报