最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Selenium+Python 自動(dòng)化操控登錄界面實(shí)例(有簡(jiǎn)單驗(yàn)證碼圖片校驗(yàn))

 更新時(shí)間:2019年06月28日 09:03:52   作者:qaz3171210  
今天小編就為大家分享一篇Selenium+Python 自動(dòng)化操控登錄界面實(shí)例(有簡(jiǎn)單驗(yàn)證碼圖片校驗(yàn)),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧

從最簡(jiǎn)單的Web瀏覽器的登錄界面開始,登錄界面如下:

進(jìn)行Web頁(yè)面自動(dòng)化測(cè)試,對(duì)頁(yè)面上的元素進(jìn)行定位和操作是核心。而操作又是以定位為前提的,因此,對(duì)頁(yè)面元素的定位是進(jìn)行自動(dòng)化測(cè)試的基礎(chǔ)。

頁(yè)面上的元素就像人一樣,有各種屬性,比如元素名字,元素id,元素屬性(class屬性,name屬性)等等。webdriver就是利用元素的這些屬性來(lái)進(jìn)行定位的。

可以用于定位的常用的元素屬性:

id

name

class name

tag name

link text

partial link text

xpath

css selector

對(duì)應(yīng)于webdriver中的定位方法分別是:

driver.find_element_by_name()——最常用,簡(jiǎn)單

driver.find_element_by_id()——最常用,簡(jiǎn)單

driver.find_element_by_class_name()

driver.find_element_by_tag_name()——最不靠譜

driver.find_element_by_link_text()——定位文字連接好用

driver.find_element_by_partial_link_text()——定位文字連接好用

driver.find_element_by_xpath()——最靈活,萬(wàn)能

driver.find_element_by_css_selector()

上面是定位一個(gè)元素的方法,相應(yīng)的webdriver也有定位一組元素的方法:

driver.find_elements_by_name() 
driver.find_elements_by_id() 
driver.find_elements_by_class_name() 
driver.find_elements_by_tag_name() 
driver.find_elements_by_link_text() 
driver.find_elements_by_partial_link_text() 
driver.find_elements_by_xpath() 
driver.find_elements_by_css_selector()

由界面可以看出,主要需要三個(gè)輸入數(shù)據(jù),首先我們要掌握F12查看頁(yè)面元素。

右鍵文本框查看元素(以用戶名文本框?yàn)槔?/p>

在該文本框中輸入用戶名“XXX”,代碼如下:

driver.find_element_by_id("os_username").send_keys("XXX")

密碼同理。

驗(yàn)證碼操作較為復(fù)雜,需要用到PIL+tesseract+image代碼庫(kù),需提前準(zhǔn)備。我的思路是首先采用driver.save_screenshot(“test.png”)截取該完整登錄界面并保存,而后選取驗(yàn)證碼區(qū)域進(jìn)行截取保存,區(qū)域選取采用region = (left.x, left.y, right.x, right.y),其中(left.x,left.y)為左上角像素坐標(biāo),(right.x,right.y)為右下角像素坐標(biāo),采用nimg = img.crop(region)來(lái)截取驗(yàn)證碼區(qū)域并用nimg.save(“new_test.png”)來(lái)保存。最后采用pytesseract.image_to_string(image)方法將圖片驗(yàn)證碼轉(zhuǎn)換成字符串。具體代碼實(shí)現(xiàn)詳見附后代碼。

三個(gè)輸入完成后,即是登錄按鈕的點(diǎn)擊,F(xiàn)12查看元素如圖:

代碼如下:

driver.find_element_by_class_name("btnSub").click()

此時(shí)即可完成登錄,注意,該識(shí)別驗(yàn)證碼的方法只能識(shí)別簡(jiǎn)單驗(yàn)證碼,過(guò)于復(fù)雜的識(shí)別會(huì)有錯(cuò)誤。

注:若登陸名為漢字需要使用

G = u”登錄名” 
driver.find_element_by_id(“os_username”).send_keys(G)

詳細(xì)代碼

 # -*- coding: utf-8 -*-
 #coding=UTF-8

 from selenium import webdriver
 from PIL import Image
 import pytesseract
 driver = webdriver.Chrome() 
 driver.get('http://XXX') #該處為具體網(wǎng)址
 driver.refresh()   #刷新頁(yè)面
 driver.maximize_window() #瀏覽器最大化
 driver.save_screenshot("test.png")

 img = Image.open("test.png")
 region = (940, 355, 1030, 385)#根據(jù)具體情況修改
 nimg = img.crop(region)
 nimg.save("new_test.png")

 image = Image.open("new_test.png")
 vcode = pytesseract.image_to_string(image)
 driver.find_element_by_id("os_username").send_keys("XX
X")
 driver.find_element_by_id("password").send_keys("XXX")
 driver.find_element_by_id("RandomCode").send_keys(vc
ode)
 driver.find_element_by_class_name("btnSub").click()

以上這篇Selenium+Python 自動(dòng)化操控登錄界面實(shí)例(有簡(jiǎn)單驗(yàn)證碼圖片校驗(yàn))就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • python的scipy.stats模塊中正態(tài)分布常用函數(shù)總結(jié)

    python的scipy.stats模塊中正態(tài)分布常用函數(shù)總結(jié)

    在本篇內(nèi)容里小編給大家整理的是一篇關(guān)于python的scipy.stats模塊中正態(tài)分布常用函數(shù)總結(jié)內(nèi)容,有興趣的朋友們可以學(xué)習(xí)參考下。
    2021-02-02
  • 談一談數(shù)組拼接tf.concat()和np.concatenate()的區(qū)別

    談一談數(shù)組拼接tf.concat()和np.concatenate()的區(qū)別

    今天小編就為大家分享一篇談?wù)剶?shù)組拼接tf.concat()和np.concatenate()的區(qū)別,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-02-02
  • Python類繼承和多態(tài)原理解析

    Python類繼承和多態(tài)原理解析

    這篇文章主要介紹了python類繼承和多態(tài)原理解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-02-02
  • python em算法的實(shí)現(xiàn)

    python em算法的實(shí)現(xiàn)

    這篇文章主要介紹了python em算法的實(shí)現(xiàn),幫助大家更好的理解機(jī)器學(xué)習(xí),感興趣的朋友可以了解下
    2020-10-10
  • Django中引入bootstrap的詳細(xì)圖文詳解

    Django中引入bootstrap的詳細(xì)圖文詳解

    Django是基于Python的一個(gè)Web開發(fā)框架,可以實(shí)現(xiàn)前端和后臺(tái)間的數(shù)據(jù)連接,下面這篇文章主要給大家介紹了關(guān)于Django中引入bootstrap的相關(guān)資料,需要的朋友可以參考下
    2022-10-10
  • python獲取微信小程序手機(jī)號(hào)并綁定遇到的坑

    python獲取微信小程序手機(jī)號(hào)并綁定遇到的坑

    這篇文章主要介紹了python獲取微信小程序手機(jī)號(hào)并綁定遇到的坑,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值 ,需要的朋友可以參考下
    2018-11-11
  • Python 數(shù)據(jù)分析之逐塊讀取文本的實(shí)現(xiàn)

    Python 數(shù)據(jù)分析之逐塊讀取文本的實(shí)現(xiàn)

    這篇文章主要介紹了Python 數(shù)據(jù)分析之逐塊讀取文本的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • python?pandas數(shù)據(jù)處理之刪除特定行與列

    python?pandas數(shù)據(jù)處理之刪除特定行與列

    Pandas是數(shù)據(jù)科學(xué)中的利器,你可能想到的數(shù)據(jù)處理騷操作,貌似用Pandas都能夠?qū)崿F(xiàn),下面這篇文章主要給大家介紹了關(guān)于python?pandas數(shù)據(jù)處理之刪除特定行與列的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-08-08
  • Python中的切片函數(shù)Slice詳解

    Python中的切片函數(shù)Slice詳解

    這篇文章主要介紹了Python中的切片函數(shù)Slice詳解,切片是對(duì)有序的集合而言,意思從有序集合里提取數(shù)據(jù)構(gòu)成子集集合,給定提取的起點(diǎn)start、終點(diǎn)end以及方向上的步長(zhǎng)step,能否切出非空子集,起點(diǎn)start需能沿步長(zhǎng)方向上到達(dá)終點(diǎn),需要的朋友可以參考下
    2023-09-09
  • python使用正則表達(dá)式匹配反斜杠\遇到的問(wèn)題

    python使用正則表達(dá)式匹配反斜杠\遇到的問(wèn)題

    在學(xué)習(xí)Python正則式的過(guò)程中,有一個(gè)問(wèn)題一直困擾我,如何去匹配一個(gè)反斜杠(即“\”),下面這篇文章主要給大家介紹了關(guān)于python使用正則表達(dá)式匹配反斜杠\的相關(guān)資料,需要的朋友可以參考下
    2022-09-09

最新評(píng)論

平定县| 虞城县| 静乐县| 高邑县| 喀喇| 嵩明县| 安西县| 托里县| 海晏县| 嵩明县| 道真| 江安县| 武冈市| 长丰县| 曲周县| 从化市| 怀仁县| 黎城县| 响水县| 比如县| 梁河县| 凤阳县| 威信县| 柳河县| 如东县| 河东区| 逊克县| 武山县| 瑞昌市| 凌海市| 青州市| 仁怀市| 土默特右旗| 华阴市| 上高县| 淮阳县| 辰溪县| 正宁县| 剑河县| 成武县| 衡山县|