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

文章目录

        • 滑块拖拽登录
        • 验证码进行登录

滑块拖拽登录

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

selenium处理滑块和验证码的方法_第1张图片

'''
思路:获取滑块元素拖拽指定距离
'''
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()

验证码进行登录

selenium处理滑块和验证码的方法_第2张图片

"""
思路:使用截屏方法获取图片后截取部分(验证码功能)
	引入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')
#使用打码平台进行解码即可

你可能感兴趣的:(python,python,pytest)