日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

用selenium验证唯品会登录

發布時間:2024/3/13 编程问答 52 豆豆
生活随笔 收集整理的這篇文章主要介紹了 用selenium验证唯品会登录 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

寫這篇文章主要就是用于以后復習,也希望能給大家提供幫助

首先就是初始化selenium

self.driver = webdriver.Chrome()self.driver.get('https://passport.vip.com/login?src=%2F%2Fcart.vip.com%2Fte2%2F')self.driver.maximize_window() # 窗口最大化time.sleep(0.3)self.driver.find_element_by_xpath('//div[@class="c-tab-nav "]/div[2]').click() # 點賬號密碼登錄self.driver.find_element_by_xpath('//div[@id="J_login_form"]/div[2]/div/input').send_keys('12345') # 輸入賬號self.driver.find_element_by_xpath('//div[@id="J_login_form"]/div[3]/div/input').send_keys('12345') # 輸入密碼self.driver.find_element_by_xpath('//div[@for="J_login_agree"]/label').click() # 點擊我同意服務條款self.driver.find_element_by_class_name('c-form-item-submit').click() # 點擊能錄time.sleep(0.5)img = self.driver.find_element_by_class_name('vipsc_qimg_inner') # 驗證碼圖片的元素ActionChains(self.driver).move_to_element(img).perform() # 鼠標懸停至驗證碼處time.sleep(0.1)

在這之后就要進行一個截屏,截屏之后再利用元素的坐標來對圖片進行一個處理,裁剪出一個完整的驗證碼圖片,不過愛奇藝這個驗證碼需要將鼠標懸停至驗證碼上才會顯示出點擊區域

img = self.driver.find_element_by_class_name('vipsc_qimg_inner') # 驗證碼圖片的元素ActionChains(self.driver).move_to_element(img).perform() # 鼠標懸停至驗證碼處time.sleep(0.1)self.driver.get_screenshot_as_file('./img/prt.png') # 截屏并將圖片保存到img文佳佳下

在這之后就需要獲取到驗證碼點擊圖片的坐標位置,并進行一些處理,之后對圖片進行裁剪

div_img = self.driver.find_element_by_class_name('vipsc_pop_inner') # 定位驗證碼圖片location = div_img.location # 獲取圖片的坐標位置size = div_img.size # 獲取圖片的x軸和y軸長度x, y = int(location['x']), int(location['y']) # 將圖片長度變成intx2, y2 = x + size['width'], y + size['height'] # 將圖片的x,y坐標和圖片的x,y軸長度相加y2 += 40 # 由于下面還有一張圖片,y在這基礎之上還要再加40

之后用PIL的Image模塊對圖片進行處理

prt = Image.open('prt.png') # 打開截圖圖片img = prt.crop((x, y, x2, y2)) # 對圖片進行裁剪img.save('./img/img2.png') # 保存裁剪的圖片

獲取坐標之后就要對用圖片進行處理,我這邊用的超級鷹,由于需要傳遞字典信息還需要在這里調用鼠標行為鏈的方法

chaojiying = Chaojiying_Client(None, None, None) # 用戶中心>>軟件ID 生成一個替換 96001im = open('img/img2.png', 'rb').read() data2 = chaojiying.PostPic(im, 9103)['pic_str'].split('|') # 對獲取的要點擊的字的坐標進行分割data_dist = {i.split(',')[0]: i.split(',')[1] for i in data2} # 將坐標格式變成字典self.click(data_dist, data)

最后的鼠標行為鏈就是對傳入的字典進行遍歷后依次對字進行點擊

for x, y in dist.items():action = ActionChains(self.driver)action.move_to_element_with_offset(data, int(x), int(y)).click().perform()self.driver.find_element_by_class_name('u-form-submit').click()

下面是完整代碼

from PIL import Image from selenium import webdriver import time from chaojiying import Chaojiying_Client from selenium.webdriver import ActionChainsclass Wph(object):def __init__(self):self.driver = webdriver.Chrome()self.driver.get('https://passport.vip.com/login?src=%2F%2Fcart.vip.com%2Fte2%2F')self.driver.maximize_window() # 窗口最大化time.sleep(0.3)self.driver.find_element_by_xpath('//div[@class="c-tab-nav "]/div[2]').click() # 點賬號密碼登錄self.driver.find_element_by_xpath('//div[@id="J_login_form"]/div[2]/div/input').send_keys('12345') # 輸入賬號self.driver.find_element_by_xpath('//div[@id="J_login_form"]/div[3]/div/input').send_keys('12345') # 輸入密碼self.driver.find_element_by_xpath('//div[@for="J_login_agree"]/label').click() # 點擊我同意服務條款self.driver.find_element_by_class_name('c-form-item-submit').click() # 點擊能錄time.sleep(0.5)def pict_get(self):img = self.driver.find_element_by_class_name('vipsc_qimg_inner') # 驗證碼圖片的元素ActionChains(self.driver).move_to_element(img).perform() # 鼠標懸停至驗證碼處time.sleep(0.1)self.driver.get_screenshot_as_file('./img/prt.png') # 截屏并將圖片保存到img文佳佳下div_img = self.driver.find_element_by_class_name('vipsc_pop_inner') # 定位驗證碼圖片location = div_img.location # 獲取圖片的坐標位置size = div_img.size # 獲取圖片的x軸和y軸長度x, y = int(location['x']), int(location['y']) # 將圖片長度變成intx2, y2 = x + size['width'], y + size['height'] # 將圖片的x,y坐標和圖片的x,y軸長度相加y2 += 40 # 由于下面還有一張圖片,y在這基礎之上還要再加40prt = Image.open('prt.png') # 打開截圖圖片img = prt.crop((x, y, x2, y2)) # 對圖片進行裁剪img.save('./img/img2.png') # 保存裁剪的圖片return div_imgdef coord_get(self, data):chaojiying = Chaojiying_Client(None, None, None) # 用戶中心>>軟件ID 生成一個替換 96001im = open('img/img2.png', 'rb').read()data2 = chaojiying.PostPic(im, 9103)['pic_str'].split('|') # 對獲取的要點擊的字的坐標進行分割data_dist = {i.split(',')[0]: i.split(',')[1] for i in data2} # 將坐標格式變成字典self.click(data_dist, data)def click(self, dist, data):for x, y in dist.items():action = ActionChains(self.driver)action.move_to_element_with_offset(data, int(x), int(y)).click().perform()self.driver.find_element_by_class_name('u-form-submit').click()def main(self):data = self.pict_get()self.coord_get(data)if __name__ == '__main__':w = Wph()w.main()

總結

以上是生活随笔為你收集整理的用selenium验证唯品会登录的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。