selenium处理滑块和验证码的方法

滑块拖拽登录

以携程注册为例进行说明:https://passport.ctrip.com/user/reg/home

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7VLVjiYz-1667787943366)(image-20221107094731595.png)]

'''
思路:获取滑块元素拖拽指定距离
'''
driver = webdriver.Chrome()
driver.get('https://passport.ctrip.com/user/reg/home')
driver.find_element(By.CLASS_NAME,'reg_agree').click()
#获取滑块元素
source = driver.find_element(By.CSS_SELECTOR,'div.cpt-drop-btn')
#以字典形式返回滑块的width和height
size = driver.find_element(By.CSS_SELECTOR,'div.cpt-bg-bar').size
#使用鼠标拖拽方法进行拖拽
from selenium.webdriver.common.action_chains import ActionChains
ac = ActionChains(driver).drag_and_drop_by_offset(source=source,xoffset=size['width'],yoffset==).perform()

验证码进行登录

在这里插入图片描述

"""
思路:使用截屏方法获取图片后截取部分(验证码功能)
	引入Pillow第三方库功能进行图片截取功能
"""
driver = webdriver.Chrome()
driver.get('http://test.com')
#保存图片方便后续处理
driver.save_screenshot('hht.png')
#获取验证码元素的左上角坐标使用location,注意屏幕缩放和布局使用100%,否则元素获取的位置会导致偏差[设置-系统-缩放和布局]
location = driver.find_element(By.ID,'form-verify-img').location
size = location = driver.find_element(By.ID,'form-verify-img').size
#打开图片进行截取,crop方法需要传入元组(left, upper, right, lower)也就是左上角和右下角的坐标即可
from PIL import Image
img = Image.open('hht.png').crop((location['x'],location['y'],location['x']+size['width'],location['y']+size['height']))
img.save('tiger.png')
#使用打码平台进行解码即可
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值