zoukankan      html  css  js  c++  java
  • 11.0 获取手机验证码

    在我们刚学ui自动化的时候,基本上所有的人都会在获取验证码这一块有那么一个梗,卡在这里,很不得劲——————————————

     因为我们几乎都是从登录注册开始....遇到的第一个难题就是验证码....

     其实获取验证码只是一个基本操作...我们不需要太在意..直接让开发弄个万能验证码就可以了

     当然有些变态的伙计,非的处理这个验证码,不然吃嘛嘛不香--------

    所以本章说一下获取手机短信验证码的基本操作.....当然如有图形验证码直接让开发撸掉吧..因为这个东西本来就是防止自动化操作的...与其花费时间研究这个---不如去看两部电影....就当假装已经搞定了..

    1.python链接mysql数据库

      

    Install 即可!

    链接方法:

    代码:

    import pymysql
    #查询
    def selectSQL(sql):
        db = pymysql.connect(host="host", port=端口号int类型, user="账号", password="密码",
                             db="数据库名称", charset='utf8')
        cursor = db.cursor()  
        cursor.execute(sql)  
        return cursor.fetchall()  #或者cursor.fetone()

     比如现在有一个表:user

    查询语句为: a=select *  from user where sex=”

    id

    name

    age

    city

    sex

    1

    张三

    17

    深圳

    2

    李四

    18

    北京

    3

    王五

    17

    上海

    4

    麻六

    18

    柬埔寨

    取值【常用】方式一共有两种:

    第一种 fetchone-----他是你每次取值只返回一个元组,查询返回(1.张三”,17,”深圳”,”,执行selectSql(a)  他只会返回第一条数据!

      修改脚本:

     

    def selectSQL(sql):
        db = pymysql.connect(host="host", port=3116, user="账号", password="密码",db="数据库名称", charset='utf8')
        cursor = db.cursor()  #面向对象  创建一个游标对象
        cursor.execute(sql)  # 执行sql语句,返回一个值——他会直接返回一个值,所以不需要db.commit()
        M=Cursor.fetchone()  #取出第一条数据
        N=Cutsor.fetchone()  #取出第二条数据
        return M,N  # 返回M,N的值
       
    #所以它针对少量取值---讲道理不是写博客--这个方法我几乎快忘了..我几乎没用过

     

     

    第二种方式:fetchall  ,顾名思义...取出所有的

     

      Selectall(a)之后取出来的结果是一个二维素组...

     

      格式:mary=((1.”张三”,17,”深圳”,””),(2,xxxxxx),(3,xxx),(),(4,xxxx))

     

        因此在用到这个二维数组的时候需要而外的处理一下如:mary[0][1]的值是张三---把元组当做列表取值就可以了!

     

     

     

     

     

    上面说的是查询,如果是增删改呢---加一个db.commit()需要提交一下!

     

    因为增删改是修改数据库...万一sql语句执行失败了,肯定是要回滚,所以需要回滚一下!完整的增删改方法,

    代码:

     

    def selectSQL(sql):
        db = pymysql.connect(host="host", port=3116, user="账号", password="密码",
                             db="数据库名称", charset='utf8')
        cursor = db.cursor()  
        cursor.execute(sql) 
        try:
            db.commit() #提交
        except:
            db.rollback() #回滚

     

    另外...为什么这里没有db.close()关闭数据库链接呢,我主要是看数据库的连接池的最大值是多少...

    ---我自己封装的方法就没有..所以复制过来的方法也没有--....不过建议大家在最后加上一个db.close()关闭数据库链接...

     

    某些小公司验证码可能是放在数据库,所以直接链接数据库取就好了!

     

     

     

    2.如果公司是用的redis数据库的话,那么你就下载一个redis客户端,并完成安装

     

    下载地址:链接:https://pan.baidu.com/s/16WLMwZ5a5gVF4vFU4yy6Dg 密码:9s6w

      安装redis,傻瓜式操作...就不截图了..

      第一步,  redis客户端连接服务器

        

     

        然后任意输入名称,指定的host地址,端口号,auth 密码,有则填写,无责点击 test connection 测试链接....链接成功之后 ,点击ok即可

        

     

     

        

     

      第二步,pycharm安装redis库, 和安装PyMySql一样

        

     

     

    python连接redis方法:如果redis无密码,就不要红色区域标识的这两个

      

     

    如:获取验证码

    如图所示,这个地方就是key....下图可以看到..我们已经把验证码取出来了对吧....所以在进行ui自动化的时候我们直接用就可以了

    然后我们看到我取出来的这个玩意是个啥.......“双层冰激凌” 竟然是字符串内嵌字符串...这个是开发存的问题....直接eval(取出来的这个值就可以了)....如果开发存的是ok..你取出来的就是一个单纯的字符串,直接用就好了!

    是不是基本操作........

     

    另外最后在插上一嘴:   开发可能把不同模块的验证码放到redis不同的目录下....所有可能导致  不同模块的key是不同的  例如:修改密码时的短信验证码和注册时的短信验证码  key会不一样!

  • 相关阅读:
    CGI编程完全手册(转)
    Linux下读写芯片的I2C寄存器(转)
    Linux内核中_IO,_IOR,_IOW,_IOWR宏的用法与解析
    H264中的SPS、PPS提取与作用(转)
    H264码流打包分析(精华)--转
    嵌入式Linux USB WIFI驱动的移植(转)
    推荐一款技术人必备的接口测试神器:Apifox
    Java 设置、删除、获取Word文档背景(基于Spire.Cloud.SDK for Java)
    Java 添加、删除、格式化Word中的图片( 基于Spire.Cloud.SDK for Java )
    Java 添加、删除、替换、格式化Word中的文本(基于Spire.Cloud.SDK for Java)
  • 原文地址:https://www.cnblogs.com/pythontest/p/9532652.html
Copyright © 2011-2022 走看看