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

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

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

從最簡單的Web瀏覽器的登錄界面開始,登錄界面如下:

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

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

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

id

name

class name

tag name

link text

partial link text

xpath

css selector

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

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

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

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()——最靈活,萬能

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àn)槔?/p>

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

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

密碼同理。

驗(yàn)證碼操作較為復(fù)雜,需要用到PIL+tesseract+image代碼庫,需提前準(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)來截取驗(yàn)證碼區(qū)域并用nimg.save(“new_test.png”)來保存。最后采用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í)即可完成登錄,注意,該識別驗(yàn)證碼的方法只能識別簡單驗(yàn)證碼,過于復(fù)雜的識別會有錯(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()   #刷新頁面
 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 自動化操控登錄界面實(shí)例(有簡單驗(yàn)證碼圖片校驗(yàn))就是小編分享給大家的全部內(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à)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-02-02
  • Python類繼承和多態(tài)原理解析

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

    這篇文章主要介紹了python類繼承和多態(tài)原理解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(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)前端和后臺間的數(shù)據(jù)連接,下面這篇文章主要給大家介紹了關(guān)于Django中引入bootstrap的相關(guān)資料,需要的朋友可以參考下
    2022-10-10
  • python獲取微信小程序手機(jī)號并綁定遇到的坑

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

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

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

    這篇文章主要介紹了Python 數(shù)據(jù)分析之逐塊讀取文本的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(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)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-08-08
  • Python中的切片函數(shù)Slice詳解

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

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

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

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

最新評論

敦煌市| 新津县| 遂平县| 武穴市| 濮阳市| 托克托县| 崇义县| 旌德县| 北票市| 聂拉木县| 顺昌县| 克拉玛依市| 富宁县| 巴林右旗| 岳池县| 安康市| 吕梁市| 天等县| 陇南市| 清水河县| 儋州市| 绵阳市| 曲水县| 专栏| 新绛县| 竹山县| 通城县| 花垣县| 威海市| 泗阳县| 逊克县| 盘锦市| 阿合奇县| 邳州市| 固安县| 镇原县| 钦州市| 黑龙江省| 绍兴县| 霍城县| 夏津县|