2.1 什么是验证码?

验证码就是指一种随机生成的信息(数字、字母、汉字、图片、算

术题)等为了防止恶意的请求行为,增加应用的

安全性。

自动化过程中也是需要进行注册或者登陆的操作,所以需要处理验

证码

 

 

2.2 验证码处理方式

去掉验证码 由开发操作 , 用在测试环境

设置万能验证码 由开发 操作, 一般也只使用在测试环境,

验证码识别技术 由于技术难度高,识别率很难达到100%,

一般不建议使用

记录COOKIE 通过记录cookie来跳过登陆的操作

 

2.3 Cookie原理

原理:

Cookie是由Web服务器生成的,并且保存在用户浏览器上的小文本文件,它可以包含用户相关的信息。

Cookie数据格式:键值对组成(python中的字典)

 

Cookie产生:客户端请求服务器,如果服务器需要记录该用户状态,就向客户端浏览器颁发一个Cookie数据

 

Cookie使用:当浏览器再次请求该网站时,浏览器把请求的数据和Cookie数据一同提交给服务器,服务器检查该Cookie,以此来辨认用户状态。

 

 

 

2.4 selenium操作cookie

driver.get_cookie(name) 获取指名称的cookie信息 返回的是一个字典

 

driver.get_cookies() 获取的是所有cookie的信息, 返回的是一个列表

 

driver.add_cookie(dict_cookie) 往浏览器驱动增加cookie,dict_cookie是一字典

 

注意事项:如何确认哪个cookie是用来控制用户权限的

针对登陆的前后的cookie进行对比,比登陆之前多的cookie都

可以用来使用控制用户权限。

手动登陆之后不能退出,退出之后就相当于cookie无效了。

 

 

 

解决注册用例可重复执行的问题?

 

通过python代码编写一个生成手机号码的函数 (会生成比较多的垃圾数据)在注册之前,备份一处数据库(备份只需要做一次),执行注册的用例,每次执先完用例之后,再去恢复数据库(如果数据库数据量大,那么恢复的时间会比较久,效率比较低)

 

通过python脚本直接在数据库删除新注的用户(要熟悉底层的数据库业务,要知道注册用户是存在哪些表中)

 

import random
import time
from selenium import webdriver
from selenium.webdriver.common.by import By
# 定义获取手机号码的函数名
def get_mobile():
   mobiles = ['130', '131', '134', '135']  # 确定手
机号码所需要格式
   number = str(int(time.time()))[2:]  # 通过时间戳获
取手机号码的后8位数(一定不会重复)
   mobile = random.choice(mobiles)+number  # 把随机选择手机
号码格式的三位数与后8位数相加
   return mobile
 
driver = webdriver.Chrome()
driver.maximize_window()
driver.implicitly_wait(10)
driver.get("http://tpshoptest.itheima.net/Home/user/reg.html")
driver.find_element(By.ID,"username").send_keys(get_mobile())
driver.find_element(By.NAME,"verify_code").send_keys("8888")
driver.find_element(By.ID,
"password").send_keys("123456")
driver.find_element(By.ID,
"password2").send_keys("123456")
driver.find_element(By.CSS_SELECTOR,
".J_btn_agree").click()
time.sleep(10)
driver.quit()