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文件即可