zoukankan      html  css  js  c++  java
  • 测试那些事儿—selenium自动化实战之登录验证码处理

    登陆时经常出现验证码自动化测试如何处理呢?

    一般有如下几种处理思路:

    1.通过接口请求,拿到对应验证码信息

    2.让开发配合把验证码改成万能验证码

    3.注入cookies

    如何通过注入cookies的方式实现呢?

    首先通过自动化形式打开登陆页面,加一定的延时时间,手动登陆后,打印出来cookies信息。

    driver = webdriver.Chrome()
    driver.get("https://fly.layui.com/user/login/")
    time.sleep(3)
    cookies = driver.get_cookies()
    print (cookies)

    拿到cookies信息后,我们此时就可以去写登录的代码去免登陆了:

    driver = webdriver.Chrome()
    driver.get("https://fly.layui.com/user/login/")
    cookies_01 = {'domain': 'fly.layui.com', 'expiry': 15522.125036, 'httpOnly': True, 'name': 'fly-layui', 'path': '/', 'secure': False, 'value': 's%3AwqpG2eBNqbfd6lmmWLc-DTiNP_.EAy1gm0u%2BCI8SMAxkFkaRWxUoGByz0g4RDXySLsjOfo'}
    cookies_02 = {'domain': '.layui.com', 'expiry': 1567495108, 'httpOnly': False, 'name': 'Hm_lvt_d214947968792b839fd669a4decaaffc', 'path': '/', 'secure': False, 'value': '1551959096'}
    cookies_03 = {'domain': '.layui.com', 'httpOnly': False, 'name': 'Hm_lpvt_d214947968792b839fd669a4decaaffc', 'path': '/', 'secure': False, 'value': '1558659109'}

    driver.add_cookie(cookies_01)
    driver.add_cookie(cookies_02)
    driver.add_cookie(cookies_03)
    driver.refresh()
    刷新后就可以自动登录了。


    但是这存在一个问题就是,如果cookies信息很多,一条条手动去添加过去麻烦,所以我们可以先把他存到一个文件中:
    cookiesFile = json.dumps(cookies)
    with open('cookiesFile.json', 'w') as filemy:

    filemy.write(cookiesFile)

    这样你之前的cookies信息就会存在cookies文件中,下次要去使用就直接读文件就好了,具体实现如下:

    with open('cookiesFile.json','r') as filemy:

    cookiesInfo=json.loads(filemy.read())

    for cc in range(0,len(cookiesInfo)):

    driver.add_cookie(cookiesInfo[cc])
    driver.refresh()
    此时通过refresh后,我们就直接登入了系统,是不是很方便呢?
  • 相关阅读:
    while练习题
    流程控制之for循环
    流程控制之while循环
    流程控制之if判断
    作业
    基本运算符
    输入输出
    基本数据类型
    变量part2
    JDBC中创建表
  • 原文地址:https://www.cnblogs.com/mgg520813/p/10600687.html
Copyright © 2011-2022 走看看