from selenium import webdriver
driver=webdriver.Chrome()#chrome不要用绿色版
driver.get('https://www.baidu.com')
print(driver.title)
driver.quit
1.访问url地址,定位到登录密码位置。并点击账号密码。
2.密码清空,并重新输入。
3.再定位滑块,模拟轨迹图,范围在180
4.模拟人的行为
#!/usr/bin/python
# -*- coding: utf-8 -*-
#强制等待
from time import sleep
from selenium import webdriver
#鼠标事件
from selenium.webdriver import ActionChains
#显式等待
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
url = 'https://i.qq.com/'
def get_track(distance):
"""
根据偏移量获取移动轨迹
:param distance: 偏移量
:return: 移动轨迹
"""
# 移动轨迹
track = []
# 当前位移
current = 0
# 减速阈值
mid = distance * 4 / 5
# 计算间隔
t = 1
# 初速度
# v = 0
v = 0
while current < distance:
if current < mid:
# 加速度为正2
# a_b = 8
a = 10
else:
# 加速度为负3
a = -3
# 初速度v0
v0 = v
# 当前速度v = v0 + at
v = v0 + a * t
# 移动距离x = v0t + 1/2 * a_b * t^2
move = v0 * t + 1 / 2 * a * t * t
# 当前位移
current += move
# 加入轨迹
track.append(round(move))
return track
def main():
driver = webdriver.Chrome()
driver.set_window_position(900,10)
#窗口最大化
driver.maximize_window()
driver.get(url)
driver.switch_to.frame('login_frame')
driver.find_element_by_id('switcher_plogin').click()
sleep(1)
driver.find_element_by_id('u').clear()
driver.find_element_by_id('u').send_keys('qq number')
driver.find_element_by_id('p').clear()
driver.find_element_by_id('p').send_keys('123')
sleep(1)
driver.find_element_by_id('login_button').click()
sleep(5)
try:
iframe = driver.find_element_by_xpath('//iframe')
except Exception as e:
print(e)
sleep(1)
driver.switch_to.frame(iframe)
#显式等待
WebDriverWait(driver,5,0.5).until(EC.presence_of_element_located((By.ID,'tcaptcha_drag_button')))
try:
button = driver.find_element_by_id('tcaptcha_drag_button')
except Exception as e:
pass
sleep(1)
distance = 180
times = 0
while True:
try:
action = ActionChains(driver)
#左键按住
action.click_and_hold(button).perform()
#清楚之前啊action
action.reset_actions()
#模拟轨迹方程
track = get_track(distance)
#[1,10,20,50,60]
for i in track:
#移动滑块
action.move_by_offset(xoffset=i,yoffset=0).perform()
#必加 清楚动作
action.reset_actions()
sleep(0.5)
#释放鼠标
action.release().perform()
sleep(5)
times += 1
print('这个是滴几次{}'.format(times))
except:
print('登录成功')
break
print(driver.title)
sleep(2)
driver.quit()
print('finish~~~')
# sleep(5)
# driver.quit()
if __name__ == '__main__':
main()