python+selenium,实现带有验证码的自动化登录功能

时间:2024-07-28 19:34:50

python+selenium的环境准备,请自行安装完成,这里直接贴代码,方便做项目时直接使用。

 import time
from selenium import webdriver
from PIL import Image #创建一个浏览器对象
browser = webdriver.Chrome()
browser.maximize_window()
#打开登录页面
browser.get('http://www.chaojiying.com/user/login/') #定位到账号的输入框
id_input = browser.find_element_by_xpath('//input[@name="user"]')
time.sleep(2)
id_input.send_keys('*******') #定位到密码输入框,输入密码
pw_input = browser.find_element_by_xpath('//input[@name="pass"]')
pw_input.send_keys('*****') """
识别验证码
"""
browser.save_screenshot('login.png') #获取验证码元素的位置
yzm = browser.find_element_by_xpath('//img[@src="/include/code/code.php?u=1"]')
#获取验证码的坐标
loc = yzm.location
#获取验证码图片的宽高
size = yzm.size print("坐标:",loc)
print("宽高",size) #获取验证码位置
left = loc['x']
top = loc['y']
bottom = top+size['height']
right = left+size['width'] #打开页面截图
page_pic = Image.open('login.png')
yzm_pic = page_pic.crop((left,top,right,bottom)) #这里需要传入一个元组 yzm_pic.save('yzm.png') #调用第三方接口识别验证码
from chaojiying import Chaojiying
#读取文件内容
with open('yzm.png','rb') as f:
pic1 = f.read() #调用第三方打码平台接口识别验证码
yz = Chaojiying(username='******', password='******', soft_id='*****')
res = yz.post_pic(pic1,codetype='').get('pic_str') #1902 验证码类型
print('识别的结果:',res) #输入验证码
browser.find_element_by_xpath('//input[@name="imgtxt"]').send_keys(res) time.sleep(5)
#点击登录按钮
browser.find_element_by_xpath('//input[@value="登录"]').click() time.sleep(5)
browser.close()

关于调用第三方平台接口的方法,请查看上一节文章代码:https://www.cnblogs.com/benben-wu/p/10487998.html