自动化测试-短信验证码处理

之前接触的的验证码都是图形验证码,可以借助图片识别来实现,不过识别率不太高

后又研究绕过验证码实现登录。

最近有遇到短信验证码的问题,网上看了有各种处理方法。

 

1、cookie 登录

 

自己先尝试了,使用cookie 登录的方法,

具体详见代码

1、 获取cookie

# FileName : VerifyCodeLogin.py
# Author   : Adil
# DateTime : 2018/4/9 13:09
# SoftWare : PyCharm


from selenium import webdriver
import time,os,yaml
url = 'https://www.baidu.com/'


driver = webdriver.Chrome()

driver.get(url)

driver.implicitly_wait(5)

driver.maximize_window()

# 打开登录窗口
driver.find_element_by_xpath('//*[@id="u1"]/a[7]').click()
# 选择用户名密码
driver.find_element_by_xpath('//*[@id="TANGRAM__PSP_10__footerULoginBtn"]').click()
# 选择短信验证码登录
driver.find_element_by_xpath('//*[@id="TANGRAM__PSP_10__smsSwitchWrapper"]').click()

cookiesList = driver.get_cookies()

print(cookiesList)

# 输入手机号
driver.find_element_by_id('TANGRAM__PSP_10__smsPhone').clear()
driver.find_element_by_id('TANGRAM__PSP_10__smsPhone').send_keys("手机号码")

# 发送验证码
driver.find_element_by_id('TANGRAM__PSP_10__smsTimer').click()

# 输入验证码

print("请输入验证码:")
verifyCode = input()
driver.find_element_by_id('TANGRAM__PSP_10__smsVerifyCode').clear()
driver.find_element_by_id('TANGRAM__PSP_10__smsVerifyCode').send_keys(verifyCode)

driver.find_element_by_id('TANGRAM__PSP_10__smsSubmit').click()

time.sleep(5)
# 获取登录后的cookies
loginCookies = driver.get_cookies()

print(loginCookies)

# 存储cookie
# cookie1 = loginCookies[5]
# cookie2 = loginCookies[6]
# cookie3 = loginCookies[8]

cookies = cookiesList


# 存储到本地yaml 文件
# 当前文件路径
yamldir = os.path.split(os.path.realpath(__file__))[0]

yamlFileName = os.path.join(yamldir,'cookies.yaml')

fw = open(yamlFileName,'w',encoding='utf-8')

# 数据组装
data = {"cookies":loginCookies}

# 数据装载

yaml.dump(data,fw)

driver.quit()

 

2、使用cookie 登录

# FileName : CookieLogin.py
# Author   : Adil
# DateTime : 2018/4/9 13:35
# SoftWare : PyCharm


from selenium import webdriver
import time,os,yaml
url = 'https://www.baidu.com/'


driver = webdriver.Chrome()

driver.get(url)

driver.implicitly_wait(5)

driver.maximize_window()

driver.delete_all_cookies()

print(driver.get_cookies())

fileDir = os.path.split(os.path.realpath(__file__))[0]
yamlFileName = os.path.join(fileDir,'cookies.yaml')
# 读取yaml 文件
f = open(yamlFileName,'r',encoding='utf-8')
cont = f.read()
cookies = yaml.load(cont)

cookiesList = cookies.get('cookies')

print(cookiesList)

for cookie in cookiesList:
    print(cookie)
    driver.add_cookie(cookie)

print(driver.get_cookies())

time.sleep(5)
driver.get(url)
driver.refresh()

time.sleep(15)

driver.quit()

 

2、使用万能验证码

  让研发提供一个万能验证码

 

3、验证码存到数据库中,从数据库中读取验证码

 

4、做一个短信广播实时监听短信验证码

  这里需要做一个短信广播小程序

  参考地址:https://www.cnblogs.com/itstu/p/6873221.html

       http://tieba.baidu.com/p/5153637250?red_tag=z1616417748

 

posted @ 2018-04-09 14:03  Blue·Sky  阅读(3730)  评论(0编辑  收藏  举报