国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Python之selenium,使用webdriver模擬登錄網(wǎng)站(含驗證碼)

這篇具有很好參考價值的文章主要介紹了Python之selenium,使用webdriver模擬登錄網(wǎng)站(含驗證碼)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

一、前言

前段時間做了一個小項目,其中有一段需要自動獲取網(wǎng)站后臺的數(shù)據(jù),但是這個網(wǎng)站沒有任何提供給開發(fā)者的API,所以只能靠自己去探索。

起初想著用發(fā)送請求的方式去模擬登陸,獲取cookies,從而再獲取網(wǎng)站后臺數(shù)據(jù),但是因為自己太菜了一些原因,放棄了這個方法。

后來想到使用webdriver調(diào)用瀏覽器來模擬登陸,發(fā)現(xiàn)操作起來簡單很多,而且可以達到同樣的效果,于是便有了這篇文章。

二、準備工作

需要下載和安裝一些東西,可以去官方教程中進行了解。 學習本篇文章的內(nèi)容只需要安裝好selenium庫以及下載好瀏覽器對應版本的驅(qū)動即可。

三、模擬登陸網(wǎng)站

1. 加載驅(qū)動和配置

這里我使用的是默認配置,如果有特殊需求,可以參照官方文檔進行學習

browser = webdriver.Chrome(executable_path='你驅(qū)動的本地路徑', options=webdriver.ChromeOptions())

2. 打開網(wǎng)站

browser.get(要打開的網(wǎng)站)

不出意外,此時會自動拉起你的瀏覽器并進入到你想進入的網(wǎng)站了,如果你的瀏覽器同時還多出來了一個像下圖這樣的頁面:

selenium模擬登錄,自動化測試,軟件測試,經(jīng)驗分享,python,selenium,測試工程師,軟件測試,性能測試,自動化測試,測試工具

不用管,因為這對你將要進行的操作基本沒有影響。

3. 尋找元素并填入賬號密碼

常規(guī)寫法如下

browser.find_element_by_name('username').send_keys('你的賬號')  # 填入用戶名 
browser.find_element_by_name('password').send_keys('你的密碼')  # 填入密碼

或者你也可以這樣,效果和上面一樣

username = browser.find_element_by_name('username')  # 尋找賬號輸入框
username.send_keys('你的賬號')  # 填入用戶名 
password = browser.find_element_by_name('password')  # 尋找密碼輸入框
password.send_keys('你的密碼')  # 填入密碼

上面尋找元素的方法中填入的username和password是根據(jù)頁面中的元素name進行尋找的,需要根據(jù)實際情況更改,如果輸入框沒有name屬性,那么也可以使用id或者xpath進行尋找。

browser.find_element_by_id()
browser.find_element_by_xpath()

當然前提是你要先手動去網(wǎng)站中獲取輸入框的這些屬性,比如說百度,按F12進行元素審查,然后按Ctrl+shift+C選擇你要找的元素,如下圖:

selenium模擬登錄,自動化測試,軟件測試,經(jīng)驗分享,python,selenium,測試工程師,軟件測試,性能測試,自動化測試,測試工具

然后去查看該元素有沒有屬性id或者name,如果有的話可以直接用,如果沒有的話就單擊鼠標右鍵,然后選擇cope,選擇xPath,然后把你復制到的xPath放到代碼里就好了。

selenium模擬登錄,自動化測試,軟件測試,經(jīng)驗分享,python,selenium,測試工程師,軟件測試,性能測試,自動化測試,測試工具

4. 填寫驗證碼

一般的網(wǎng)站登錄時都會有驗證碼,而驗證碼的識別一般是比較麻煩的一件事情(對于新手來說),這里分享一下我的經(jīng)驗。

首先需要自己去找一個打碼平臺(直接百度搜打碼平臺,然后挑一個合適的就好了),然后去閱讀它的接入文檔,使用它的API進行識別網(wǎng)站的驗證碼,一般需要給它傳入一個以base64編碼的字符串,代表待識別圖片,然后它會給你返回一些信息,里面會包括識別結果。

回到我們的程序,找到驗證碼圖片的元素,有些驗證碼可以直接獲取到base64形式的圖片鏈接,這時候直接傳給打碼平臺進行識別就可以了,代碼如下:

image = browser.find_element_by_xpath('//*[@id="root"]/div/div/div/div/div[2]/div[3]/div[1]/div[2]/img')
image = image.get_attribute('src')  # 獲取當前驗證碼圖片鏈接
imageCaptchaValue = readImage(image)  # 這里的readImage是用來給打碼平臺發(fā)送請求的方法,需要根據(jù)自己的實際情況去實現(xiàn)這個方法
captchaValue = browser.find_element_by_xpath('//*[@id="root"]/div/div/div/div/div[2]/div[3]/div[1]/input')  # 驗證碼輸入框
captchaValue.send_keys(imageCaptchaValue)  # 填入驗證碼

如果你要登錄的網(wǎng)站的驗證碼不是base64形式的鏈接,甚至你單擊右鍵在新窗口中打開圖片時顯示的又是另一張圖片,那么很可能就需要用到下面的方法了。

  1. 調(diào)用screenshot()方法對驗證碼進行截圖操作,并對圖片進行保存
  2. 將保存的圖片以二進制的方式打開,并轉(zhuǎn)為base64編碼
  3. 將得到的base64編碼字符串解碼并傳給打碼平臺進行識別

代碼如下:

browser.find_element_by_name('img').screenshot("img.png")  # 找到驗證碼并將驗證碼以截圖的方式保存
f = open('img.png', 'rb')  # 二進制方式打開圖文件
image = base64.b64encode(f.read())  # 讀取文件內(nèi)容,轉(zhuǎn)換為base64編碼
f.close()
imageCaptchaValue = readImage(image.decode())  # base64編碼解碼后進行識別
browser.find_element_by_name('rand').send_keys(imageCaptchaValue)  # 填入驗證碼

這里需要注意的是以base64編碼進行發(fā)送的時候需要先解碼,否則會報錯:

TypeError: Object of type bytes is not JSON serializable

進行到這一步,如果不出意外的話,只需要點擊登錄按鈕就可以成功登錄了:

browser.find_element_by_id('login_btn1').click()  # 點擊登錄按鈕

登錄網(wǎng)址后就可以進行自己想要做的事情啦! 這里再放一些登錄后可能需要的代碼:

browser.switch_to.alert.accept()  # 接受彈窗警告
cookies = browser.get_cookies()  # 獲取當前狀態(tài)下的cookies
dataUrl = browser.find_element_by_xpath('/html/body/a[1]').get_attribute('href')  # 獲取數(shù)據(jù)文件下載路徑

四、遇到的一些坑

  1. 有些網(wǎng)站的元素并不能直接通過find尋找到,比如有些網(wǎng)站頁面用了大量的frame或iframe,那么此時需要先進入到該元素所在的frame,然后才能找到需要的元素:
browser.switch_to.frame('left')  # 進入到frame下
doSomething......
browser.switch_to.default_content()  # 重新回到主頁面上操作元素
browser.switch_to.frame('main')  # 進入到新的frame中進行操作
doSomething......
  1. 一般的打碼平臺都需要充值后才能使用,建議先進行在線免費測試,確認它可以識別我們的驗證碼了之后再進行充值使用。
  2. 操作完畢后要記得關閉瀏覽器browser.quit()
  3. 如果在調(diào)用selenium的一些方法的時候發(fā)現(xiàn)pycharm給代碼打了中劃線,那么可能是這樣方法已經(jīng)不被推薦使用了,這時候稍微修改一下即可:
switch_to_window 改為 switch_to.window
switch_to_default_content 改為 switch_to.default_content
switch_to_frame 改為 switch_to.frame
  1. 有時候瀏覽器的加載速度跟不上你代碼的運行速度,或者請求驗證碼識別速度比較慢,建議使用暫停的方法來進行緩沖:
browser.implicitly_wait(3)
time.sleep(2)

五、后記

其實整個流程操作下來,也就幾十行代碼,但是對于像我這樣的菜雞新手來說,可能需要七找八找,花上好幾個小時,才能解決其中遇到的一些問題。學會selenium的一些方法之后,你會發(fā)現(xiàn)你還可以做很多其他的事情,然后掛在服務器上……哈哈哈,這里就不多說了。

如果大家在操作過程中還遇到了其他的困難,多多百度,百度能解決你大部分問題。等一個個解決之后,你還可以寫一篇博客記錄一下,把自己的經(jīng)驗分享給大家,讓自己學到的東西更有意義,這也是一種樂趣吧!

如果文章對你有幫助,記得點贊,收藏,加關注。會不定期分享一些干貨哦......

END配套學習資源分享

最后:?為了回饋鐵桿粉絲們,我給大家整理了完整的軟件測試視頻學習教程,朋友們?nèi)绻枰梢宰孕忻赓M領取?【保證100%免費】

selenium模擬登錄,自動化測試,軟件測試,經(jīng)驗分享,python,selenium,測試工程師,軟件測試,性能測試,自動化測試,測試工具

加入我的軟件測試交流qq群:110685036免費獲取~(同行大佬一起學術交流,每晚都有大佬直播分享技術知識點)

軟件測試面試文檔

我們學習必然是為了找到高薪的工作,下面這些面試題是來自阿里、騰訊、字節(jié)等一線互聯(lián)網(wǎng)大廠最新的面試資料,并且有字節(jié)大佬給出了權威的解答,刷完這一套面試資料相信大家都能找到滿意的工作。

selenium模擬登錄,自動化測試,軟件測試,經(jīng)驗分享,python,selenium,測試工程師,軟件測試,性能測試,自動化測試,測試工具

全套資料獲取方式:

selenium模擬登錄,自動化測試,軟件測試,經(jīng)驗分享,python,selenium,測試工程師,軟件測試,性能測試,自動化測試,測試工具文章來源地址http://www.zghlxwxcb.cn/news/detail-788163.html

到了這里,關于Python之selenium,使用webdriver模擬登錄網(wǎng)站(含驗證碼)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • 使用selenium模擬登錄解決滑塊驗證問題

    目錄 1.登錄入口 2.點擊“賬號密碼登錄” 3.輸入賬號、密碼并點擊登錄 4.滑塊驗證過程 5.小結 本次主要是使用selenium模擬登錄網(wǎng)頁端的TX新聞,本來最開始是模擬請求的,但是某一天突然發(fā)現(xiàn),部分賬號需要經(jīng)過滑塊驗證才能正常登錄,如果還是模擬請求,需要的參數(shù)太多了

    2024年02月16日
    瀏覽(18)
  • python selenium模擬登錄某網(wǎng)站的滑塊拖動操作

    python selenium模擬登錄某網(wǎng)站的滑塊拖動操作

    參考文章: https://blog.csdn.net/u010945216/article/details/120838385

    2024年02月16日
    瀏覽(24)
  • Python爬蟲-使用Selenium模擬百度登錄

    Python爬蟲-使用Selenium模擬百度登錄

    ? ? 前面我已經(jīng)安裝好了Selenium并模擬成功了一下打開百度頁面并進行查詢,讓我這個python初學者信心倍增,今天再來試一試百度登錄 把打開百度的代碼放到構造方法中 ps:那個文件目錄是用于后面滑塊驗證圖片保存的。 點擊右上角的“登錄”按鈕,打開登錄框, 代碼如下:

    2024年02月06日
    瀏覽(26)
  • python使用selenium模擬登錄網(wǎng)頁頁面

    python使用selenium模擬登錄網(wǎng)頁頁面

    python的selenium用于自動化測試,但是在自動化測試的時候也可以用來模擬登錄,本次用selenium模擬登錄某DN網(wǎng)頁 代碼如下(示例): 本次使用的是谷歌的內(nèi)核若有需要,也可以換其他瀏覽器的內(nèi)核 首先打開CSDN頁面準備在頁面中定位元素 為方便操作,直接在開發(fā)者界面中復制

    2024年02月13日
    瀏覽(22)
  • 【Python從入門到進階】39、使用Selenium自動驗證滑塊登錄

    【Python從入門到進階】39、使用Selenium自動驗證滑塊登錄

    接上篇《38、selenium關于Chrome handless的基本使用》 上一篇我們介紹了selenium中有關Chrome的無頭版瀏覽器Chrome Handless的使用。本篇我們使用selenium做一些常見的復雜驗證功能,首先我們來講解如何進行滑塊自動驗證的操作。 我們要通過selenium來實現(xiàn)目前常見的滑塊驗證碼的驗證,

    2024年02月08日
    瀏覽(95)
  • C#使用Selenium WebDriver模擬人工操作網(wǎng)頁方法

    目錄 1.Selenium WebDriver使用方法 2.Selenium WebDriver安裝方法 1.Selenium WebDriver使用方法 在C#中模擬人工操作網(wǎng)頁通常需要使用Web自動化工具或庫來實現(xiàn)。一種常用的方式是使用Selenium WebDriver,它是一個用于自動化Web瀏覽器操作的工具,支持多種瀏覽器,包括Chrome、Firefox、Edge等。以

    2024年02月06日
    瀏覽(26)
  • python爬蟲 scrapy+selenium+webdriver實現(xiàn)鼠標滑動破解阿里云盾快驗證

    在爬取jianshu文章的時候發(fā)現(xiàn),jianshu竟然買了阿里云的盾塊驗證!?。『苁穷^疼,雖然說沒有其他圖片匹配的那么麻煩,但是阿里云的人機驗證和算法真的是頂尖的,查閱了多個資料最后沒辦法,才實現(xiàn)用webdriver模擬鼠標去通過驗證 首先我們需要安裝webdriver驅(qū)動和Google Chrom

    2024年02月03日
    瀏覽(104)
  • java爬蟲遇到網(wǎng)頁驗證碼怎么辦?(使用selenium模擬瀏覽器并用python腳本解析驗證碼圖片)

    ????????筆者這幾天在爬取數(shù)據(jù)的時候遇到了一個很鬧心的問題,就是在我爬取數(shù)據(jù)的時候遇到了驗證碼,而這個驗證碼又是動態(tài)生成的,嘗試了很多方法都沒能繞開這個驗證碼問題。 ? ? ? ? 我的解決方案是:使用selenium模擬瀏覽器行為,獲取到動態(tài)生成的驗證碼后用

    2024年02月09日
    瀏覽(175)
  • 關于國家中小學智慧教育平臺登錄和退出的Python-Webdriver-Selenium代碼

    登錄和退出過程中用到的知識有:1網(wǎng)頁元素的定位(用了八種方法中的四種:XPATH,TAG_NAME,ID,CLASSNAME);2輸入文本;3點擊元素;4嵌套網(wǎng)頁的跳轉(zhuǎn);5在確定網(wǎng)頁元素時用到了瀏覽器開發(fā)者工具(F12)。

    2024年02月14日
    瀏覽(19)
  • Python爬蟲教程:Selenium模擬登錄

    Python爬蟲教程:Selenium模擬登錄

    Selenium(本文基于python3.8)是一個功能強大的自動化測試工具,它可以用于模擬用戶在瀏覽器中的行為,比如點擊、輸入、滾動等等,也可用于模擬登錄網(wǎng)站并進行爬蟲操作。本教程將詳細介紹如何使用Python編寫一個模擬登錄地爬蟲,使用XPath等多種元素匹配方法。 在開始之

    2024年02月04日
    瀏覽(35)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包