模拟滑动验证码代码:
# 获取iframe-id,切换浏览器标签定位的作用域
bro.switch_to.frame('tcaptcha_iframe')
div = bro.find_element(By.ID, 'tcaptcha_drag_thumb')
# 动作链
action = ActionChains(bro)
# 点击长按指定的标签
action.click_and_hold(div)
# 水平拖动170xp位置
action.move_by_offset(180, 0).perform()
div.click()
# 释放动作链
action.release().perform()
源码:
from selenium import webdriver
from time import sleep
from selenium.webdriver import ActionChains # 动物链
from selenium.webdriver.common.by import By # find_element(By.xx,'xx')
from selenium.webdriver import ChromeOptions # 规避检测
def login():
# 切换到登录标签
bro.switch_to.frame('login_frame')
# 定位到帐号登录标签
bro.find_element(By.ID, 'switcher_plogin').click()
sleep(1)
# 定位到账号密码标签及输入
bro.find_element(By.ID, 'u').send_keys('输入QQ账号')
bro.find_element(By.ID, 'p').send_keys('输入QQ密码')
# 点击登录
btn = bro.find_element(By.ID, 'login_button')
btn.click()
sleep(1)
# 获取iframe-id,切换浏览器标签定位的作用域
bro.switch_to.frame('tcaptcha_iframe')
div = bro.find_element(By.ID, 'tcaptcha_drag_thumb')
# 动作链
action = ActionChains(bro)
# 点击长按指定的标签
action.click_and_hold(div)
# 水平拖动170xp位置
action.move_by_offset(180, 0).perform()
div.click()
# 释放动作链
action.release().perform()
sleep(10)
bro.quit()
if __name__ == '__main__':
# 规避检测
options = ChromeOptions()
options.add_argument("--disable-blink-features=AutomationControlled")
options.add_experimental_option('excludeSwitches', ['enable-automation'])
url = 'https://qzone.qq.com/'
bro = webdriver.Chrome(executable_path='./chromedriver.exe',options=options)
bro.get(url)
login()