from selenium import webdriver
# 鼠标动作
from selenium.webdriver.common.action_chains import ActionChains
import time
def get_tracks(distance):
"""
distance: 传入的总距离
return : 存放每0.3秒移动的距离
"""
# 移动轨迹
tracks = []
# 当前位移
current = 0
# 减速阈值
mid = distance * 4 / 5
# 计算间隔
t = 0.2
# 初速度
v = 50
while current < distance:
if current < mid:
# 加速度为2
a = 2
else:
# 加速度为-2
a = -2
v0 = v
# 当前速度
v = v0 + a * t
# 移动距离
move = v0 * t + 1 / 2 * a * t * t
# 当前位移
current += move
# 加入轨迹
tracks.append(round(move))
return tracks
opt = webdriver.ChromeOptions()
opt.add_experimental_option('excludeSwitches', ['enable-automation'])
driver = webdriver.Chrome(options=opt)
driver.get('https://accounts.douban.com/passport/login')
driver.find_element_by_xpath('//*[@id="account"]/div[2]/div[2]/div/div[1]/ul[1]/li[2]').click()
driver.find_element_by_id('username').send_keys('username')
driver.find_element_by_id('password').send_keys('password')
driver.find_element_by_xpath('//*[@id="account"]/div[2]/div[2]/div/div[2]/div[1]/div[4]').click()
time.sleep(2)
driver.switch_to.frame(0)
element = driver.find_element_by_id('tcaptcha_drag_thumb')
# 按下鼠标
ActionChains(driver).click_and_hold(on_element=element).perform()
# 拖动鼠标
ActionChains(driver).move_to_element_with_offset(to_element=element, xoffset=125, yoffset=0).perform()
tracks = get_tracks(118)
print(tracks)
for track in tracks:
ActionChains(driver).move_by_offset(xoffset=track, yoffset=0).perform()
time.sleep(0.8)
ActionChains(driver).release().perform()
time.sleep(10)
豆瓣滑块登录
最新推荐文章于 2024-08-01 21:24:20 发布