滑块拖拽登录
以携程注册为例进行说明:https://passport.ctrip.com/user/reg/home
'''
思路:获取滑块元素拖拽指定距离
'''
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')
#使用打码平台进行解码即可