python+appium从Mysql数据库中获取验证码

Posted 寒冰宇若

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python+appium从Mysql数据库中获取验证码相关的知识,希望对你有一定的参考价值。

最近在使用python+appium做APP自动化的时候,需要获取验证码,测试环境有验证码开关,打开时会自动填入验证码,但是这样和实际使用场景还是有差距,于是想从数据库直接获取验证码,数据库用的是Mysql,一下是我使用数据库获取验证码的步骤,希望对小伙伴有帮助

测试界面如下:

 

 

首先,需要连接数据库:

1.在Pycharm的.py文件中直接输入import MySQLdb,提示报错,原因是python库没有自带Mysql驱动,网站找一下,解决方法如下:打开cmd(我用的是win7系统,win10的话可能需要管理员运行cmd),输入pip3 install mysqlclient,会自动下载mysqlclien包,执行成功后如下图,下载成功后,.py文件中import MySQLdb就OK了

 

 

 2.然后就可以开始编写数据库连接语句了

 代码如下:

#通过数据库获取验证码
conn = MySQLdb.connect(host=\'xxx\',port=xxx,user=\'xxx\',passwd=\'xxx\',db=\'xxx\')
cur = conn.cursor()
#查询表中最后一条数据的验证码
sql = """SELECT
XXX
FROM
xxx"""
cur.execute(sql)
smscode = cur.fetchone()

 

遇到的问题:

  1.提示:MySQLdb._exceptions.OperationalError: (2002, "Can\'t connect to MySQL server on \'xxx\' (10060)"),详情如下:

    File "C:\\Program Files\\Python37\\lib\\site-packages\\MySQLdb\\__init__.py", line 84, in Connect
    return Connection(*args, **kwargs)
    File "C:\\Program Files\\Python37\\lib\\site-packages\\MySQLdb\\connections.py", line 179, in __init__
    super(Connection, self).__init__(*args, **kwargs2)
    MySQLdb._exceptions.OperationalError: (2002, "Can\'t connect to MySQL server on \'xxx\' (10060)")

    原因分析:1.数据库用户名密码不对

   2.host没写正确,用的是外网连接

解决办法:

  针对原因1,请确认连接串中的用户名、密码和数据库名称正确

  针对原因2,因为我这里连接的是阿里云rds数据库,所以有内外网区分,只要把host里的连接串改成内网连接串即可

 

3.将获取到的验证码输入到验证码输入框中,代码如下:

driver.find_element_by_id("xxx").send_keys(smscode)

再重新右键选择run py文件即可

以上是关于python+appium从Mysql数据库中获取验证码的主要内容,如果未能解决你的问题,请参考以下文章

python+appium获取app元素属性值

python+appium如何获取元素内容的颜色

python appium 封装获取toast方法

获取appPackage和appActivity(python+appium)

appium+python+ios怎么获取元素属性

Python爬虫:详解Appium如何爬取手机App数据以及模拟用户操作手势