資源簡介
滑塊驗證碼自動驗證
代碼片段和文件信息
#?圖像處理標準庫
from?PIL?import?Image
#?web測試
from?selenium?import?webdriver
#?鼠標操作
from?selenium.webdriver.common.action_chains?import?ActionChains
#?等待時間?產生隨機數
import?time?random
#?滑塊移動軌跡
def?get_tracks1(distance):
????#?初速度
????v?=?0
????#?單位時間為0.3s來統計軌跡,軌跡即0.3s內的位移
????t?=?0.3
????#?位移/軌跡列表
????tracks?=?[]
????#?當前的位移
????current?=?0
????#?到達mid值開始減速
????mid?=?distance?*?4?/?5
????while?current?????????if?current?????????#?加速度越小,單位時間內的位移越小,模擬的軌跡就越多越詳細
????????????a?=?2
????????else:
????????????a?=?-3
????????#?初速度
????????v0?=?v
????????#?0.3s時間內的位移
????????s?=?v0?*?t?+?0.5?*?a?*?(t?**?2)
????????#?當前位置
????????current?+=?s
????????#?添加到軌跡列表
????????tracks.append(round(s))
????????#?速度已經達到V,該速度作為下次的初速度
????????v?=?v0?+?a?*?t
????return?tracks
#?計算滑塊位移距離
def?get_diff_location(image1?image2):
????#?(0340)(0340)為滑塊圖片區(qū)域,可根據實際情況修改
????for?i?in?range(0?340):
????????for?j?in?range(0?198):
????????????#?遍歷原圖與缺口圖像素值尋找缺口位置
????????????if?is_similar(image1?image2?i?j)?==?False:
????????????????return?i
????return?-1
#?對比RGB值得到缺口位置
def?is_similar(image1?image2?x?y):
????pixel1?=?image1.getpixel((x?y))
????pixel2?=?image2.getpixel((x?y))
????#?截圖像素也許存在誤差,50作為容差范圍
????if?abs(pixel1[0]?-?pixel2[0])?>=?50?and?abs(pixel1[1]?-?pixel2[1])?>=?50?and?abs(pixel1[2]?-?pixel2[2])?>=?50:
????????return?False
????return?True
def?login():
????#?實例化瀏覽器
????driver?=?webdriver.Chrome(‘/Users/zhangpei/Documents/ChromeExtensions/chromedriver‘)
????#?請求登錄網址
????driver.get(‘https://www.zhi-niao.com/znWeb/znPortal/#/login‘)
????#?最大化瀏覽器
????driver.maximize_window()
????#?#?輸入賬號
????#?driver.find_element_by_xpath(‘//*[@id=“LoginName“]‘).send_keys(‘你的賬號‘)
????#?#?輸入密碼
????#?driver.find_element_by_xpath(‘//*[@id=“Password“]‘).send_keys(‘你的密碼‘)
????#?#?點擊登錄
????#?driver.find_element_by_xpath(‘//*[@id=“submitBtn“]/span[1]‘).click()
????#?等待2s使驗證彈窗加載完成
????time.sleep(20)
????#?定位到圓球
????slider?=?driver.find_element_by_xpath(‘/html/body/div[2]/div[2]/div[2]/div[1]/div[2]/div[2]‘)
????#?點擊鼠標左鍵,不松開
????ActionChains(driver).click_and_hold(slider).p
評論
共有 條評論