0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Selenium模擬怎么滑塊拖動-2

汽車電子技術(shù) ? 來源:Python數(shù)據(jù)分析之旅 ? 作者:cauwfq ? 2023-02-24 15:12 ? 次閱讀

poYBAGP4YrKASeynAABxzdWp4K0336.png

一.項目背景
滑塊驗證碼,即用戶使用鼠標(biāo)將滑塊從某個位置拖動到另一個位置,服務(wù)器通過用戶拖動滑塊的軌跡來判斷當(dāng)前用戶是否為人類,本文主要介紹如何利用Selenium框架模擬滑塊移動。

上篇Selenium模擬滑塊拖動我們介紹了模擬豆瓣滑塊登錄,但是尚未成功,主要原因是豆瓣會檢測Chromium層指紋,需要抹除該指紋才能登錄成功,這塊相關(guān)知識點我們就不分享了。本篇在之前基礎(chǔ)上改進(jìn),增加了輪廓檢測部分,適用性更廣。

二.實現(xiàn)過程

1.構(gòu)建加速度函數(shù)

#獲取距離值
def get_tracks(distance):
    '''
    模擬人的滑動行為,先勻加速后勻減速
    勻變速基本公式
    v=v0+at
    s=vot+1/2at2
    '''
    
    #初速度
    v=0
    #設(shè)置時間
    t=0.3
    #存儲每段距離值
    tracks=[]
    #當(dāng)前距離
    current=0
    #中間位置為4/5距離處
    mid=distance*4/5
    while current
2.構(gòu)建位置檢測函數(shù)

#獲取圖片位置
def get_pos(img):
    #高斯濾波
    blurred=cv.GaussianBlur(img,(5,5),0)
    #邊緣檢測
    canny=cv.Canny(blurred,200,400)
    #提取邊界的拓?fù)湫蛄?    contours,hierarchy=cv.findContours(canny,cv.RETR_EXTERNAL,cv.CHAIN_APPROX_SIMPLE)
    #遍歷點集
    for i,contour in enumerate(contours):
        m=cv.moments(contour)
        if m['m00']==0:
            cx=cy=0
        else:
            cx,cy=m['m10']/m['m00'],m['m01']/m['m00']
        if 6000(contour)<8000>

poYBAGP4YwWAHUdGAAh1gEEvsuI747.png
3.模擬滑塊移動

from selenium import webdriver
from selenium.webdriver import ActionChains
import time
from selenium.webdriver.chrome import options
import requests
import cv2 as cv


#初始化選項
opt=options.Options()
#設(shè)置user-agent
ua='Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.93 Safari/537.36'
#添加user-agent
opt.add_argument(f"user-agent={ua}")
#去掉提示:Chrome正收到自動測試軟件的控制
opt.add_argument('--disable-infobars')
#關(guān)閉開發(fā)者模式
opt.add_experimental_option("useAutomationExtension", False)
#以鍵值對的形式加入參數(shù)
opt.add_experimental_option("excludeSwitches", ['enable-automation'])
#禁用啟用Blink運行時的功能
opt.add_argument('--disable-blink-features=AutomationControlled')

#獲取滑塊
element=browser.find_element_by_xpath('//*[@id="tcaptcha_drag_thumb"]')
#在滑塊上暫停
ActionChains(browser).click_and_hold(on_element=element).perform()
#拖動滑塊180像素
ActionChains(browser).move_to_element_with_offset(to_element=element,xoffset=distance[0]/2-25,yoffset=0).perform()
#拖動剩余像素
tracks=get_tracks(25)
#遍歷梅一段距離
for track in tracks:
    #滑塊移動響應(yīng)距離
    ActionChains(browser).move_by_offset(xoffset=track,yoffset=0).perform()
#休息1s中
time.sleep(1)
#釋放滑塊
ActionChains(browser).release().perform()

poYBAGP4YxyAQCPNAAGKAbGQEvE847.png
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 服務(wù)器
    +關(guān)注

    關(guān)注

    12

    文章

    8700

    瀏覽量

    84537
  • 框架
    +關(guān)注

    關(guān)注

    0

    文章

    396

    瀏覽量

    17268
  • 軌跡
    +關(guān)注

    關(guān)注

    0

    文章

    46

    瀏覽量

    9251
收藏 人收藏

    評論

    相關(guān)推薦

    想將CY8CMBR3106S用于2滑塊,這個IC是否支持2滑塊同時工作?

    我想將 CY8CMBR3106S 用于 2滑塊,這個 IC 是否支持 2滑塊同時工作,我可以同時觸摸它們并獲得觸摸數(shù)據(jù)? 謝謝。
    發(fā)表于 02-26 06:41

    【安富萊原創(chuàng)】【STemWin教程】第55章 SLIDER-滑塊控件

    `第55章 SLIDER-滑塊控件 本期教程講解STemWin支持的滑塊控件。 55. 1滑塊控件介紹 55. 2 官方DIALOG_SliderColor實例 55. 3 使用官方
    發(fā)表于 05-20 10:53

    第55章 SLIDER-滑塊控件

    轉(zhuǎn)stemwin教程 本期教程講解STemWin支持的滑塊控件。 55. 1滑塊控件介紹 55. 2 官方DIALOG_SliderColor實例 55. 3 使用官方GUIBulder建立
    發(fā)表于 10-18 11:20

    滑塊刪除對話框滑塊值會怎么變化?

    我想問一個滑塊的問題,你在滑動滑塊的時候,它的值是會變化的,那么當(dāng)刪除這個對話框(滑塊創(chuàng)建在這個對話框上面)以后,滑塊的值會怎么變化呢?從我自己試驗的結(jié)果來看,這個值好像是隨機的。 希
    發(fā)表于 05-09 01:16

    自動化測試工具Selenium怎么工作?

    Selenium工作原理
    發(fā)表于 09-20 12:36

    常用Selenium封裝方法有哪些?

    Python中,常用Selenium方法封裝(5)
    發(fā)表于 05-01 17:38

    Python常用Selenium方法封裝是什么

    Python中,常用Selenium方法封裝(4)
    發(fā)表于 05-18 12:03

    如何在Python中使用Selenium

    行1:從selenium模塊導(dǎo)入webdriver  · 代碼行2:從硒模塊導(dǎo)入鍵  · 代碼行3:用戶是一個空白變量,將用于存儲用戶名的值?!  ?代碼行4:pwd也是一個空白變量。這將用于存儲密碼
    發(fā)表于 09-08 18:17

    使用handleDragEvent和handleClickEvent時,點擊和拖動的按鈕和滑塊等小部件不起作用怎么解決?

    您好,當(dāng)我使用handleDragEvent和handleClickEvent時,需要點擊和拖動的按鈕和滑塊等小部件不再起作用。我怎么解決這個問題?
    發(fā)表于 01-05 08:08

    電力拖動系統(tǒng)基礎(chǔ)

    電力拖動系統(tǒng)基礎(chǔ)1.了解電力拖動系統(tǒng)的基本組成;2. 掌握電力拖動系統(tǒng)運動方程式;3. 熟悉轉(zhuǎn)矩與飛輪矩的折算方法;4. 掌握生產(chǎn)機械的負(fù)載轉(zhuǎn)矩特性的分類;5.
    發(fā)表于 11-19 22:01 ?0次下載
    電力<b class='flag-5'>拖動</b>系統(tǒng)基礎(chǔ)

    廣州大彩串口屏工程技術(shù)筆記-進(jìn)度條控件和滑塊控件應(yīng)用

    適合經(jīng)濟型、基本型、物聯(lián)型、86盒系列等串口屏產(chǎn)品。 進(jìn)度條控件,可以比較形象地對數(shù)據(jù)進(jìn)行顯示反映外部上傳到屏幕的數(shù)據(jù)真實現(xiàn)狀。 滑塊控件,通過對滑塊拖動,可以對外部設(shè)備進(jìn)行控制,比如控制燈的亮度、控制電動
    發(fā)表于 05-25 14:03 ?5次下載

    一個openharmony滑塊/搜索欄案例

    一個openharmony滑塊/搜索欄,但不同:-) 依賴項 { 實現(xiàn)‘ io 。開放和諧。tpc 。第三庫:ohos - slidr:1.0 。2 ’ } final Slidr slidr
    發(fā)表于 04-01 09:12 ?1次下載

    Selenium在自動化中有何用處

      Selenium是一個開源的自動化測試工具,可以輕松自動化Web應(yīng)用程序。它還能夠自動化我們的功能測試任務(wù)。Selenium是一組軟件工具,為 測試自動化提供不同級別的支持。Selenium包括
    的頭像 發(fā)表于 12-09 15:05 ?1632次閱讀

    Selenium模擬怎么滑塊拖動

    滑塊驗證碼,即用戶使用鼠標(biāo)將滑塊從某個位置拖動到另一個位置,服務(wù)器通過用戶拖 動滑塊的軌跡來判斷當(dāng)前用戶是否為人類,本文主要介紹如何利用Selen
    的頭像 發(fā)表于 02-24 15:05 ?3737次閱讀
    <b class='flag-5'>Selenium</b><b class='flag-5'>模擬</b>怎么<b class='flag-5'>滑塊</b><b class='flag-5'>拖動</b>

    Python中使用selenium的準(zhǔn)備工作

    定義 Selenium是一個用于Web應(yīng)用程序測試的自動化測試工具。使用Selenium可以驅(qū)動瀏覽器執(zhí)行特定的動作,如點擊、下拉等操作,還可以獲取頁面信息,斷言頁面是否如預(yù)期。在工作中我們可以用
    的頭像 發(fā)表于 11-15 11:12 ?304次閱讀
    Python中使用<b class='flag-5'>selenium</b>的準(zhǔn)備工作