用selenium验证唯品会登录
生活随笔
收集整理的這篇文章主要介紹了
用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验证唯品会登录的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 小红书账号怎么做起来的呢?干货!快收藏起
- 下一篇: 智能节水灌溉设计