欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python自動(dòng)化測(cè)試?yán)鱯elenium詳解

 更新時(shí)間:2023年04月27日 11:06:56   作者:ZIYE_190  
Selenium是一種常用的Web自動(dòng)化測(cè)試工具,支持多種編程語(yǔ)言和多種瀏覽器,可以模擬用戶的交互行為,自動(dòng)化地執(zhí)行測(cè)試用例和生成測(cè)試報(bào)告。Selenium基于瀏覽器驅(qū)動(dòng)實(shí)現(xiàn),結(jié)合多種定位元素的方法,可以實(shí)現(xiàn)各種復(fù)雜的Web應(yīng)用程序的測(cè)試

1 自動(dòng)化測(cè)試

自動(dòng)化測(cè)試指軟件測(cè)試的自動(dòng)化,在預(yù)設(shè)狀態(tài)下運(yùn)行應(yīng)用程序或者系統(tǒng),預(yù)設(shè)條件包括正常和異常,最后評(píng)估運(yùn)行結(jié)果。將人為驅(qū)動(dòng)的測(cè)試行為轉(zhuǎn)化為機(jī)器執(zhí)行的過(guò)程。

自動(dòng)化測(cè)試包括UI自動(dòng)化,接口自動(dòng)化,單元測(cè)試自動(dòng)化。按照這個(gè)金字塔模型來(lái)進(jìn)行自動(dòng)化測(cè)試規(guī)劃,可以產(chǎn)生最佳的自動(dòng)化測(cè)試產(chǎn)出投入比(ROI),可以用較少的投入獲得很好的收益。

1.1 單元測(cè)試

最大的投入應(yīng)該在單元測(cè)試上,單元測(cè)試運(yùn)行的頻率也更加高。

java的單元測(cè)試框架是Junit。

1.2 接口測(cè)試

接口測(cè)試就是API測(cè)試,相對(duì)于UI自動(dòng)化API自動(dòng)化更加容易實(shí)現(xiàn),執(zhí)行起來(lái)也更穩(wěn)定。

接口自動(dòng)化的有以下特點(diǎn):

  • 可在產(chǎn)品前期,接口完成后介入
  • 用例維護(hù)量小
  • 適合接口變動(dòng)較小,界面變動(dòng)頻繁的項(xiàng)目

常見(jiàn)的接口自動(dòng)化測(cè)試工具有,RobotFramework,JMeter,SoapUI,TestNG+HttpClient,Postman等

1.3 UI測(cè)試

雖然測(cè)試金字塔告訴我們盡量多做API層的自動(dòng)化測(cè)試,但是UI層的自動(dòng)化測(cè)試更加貼近用戶的需求和軟件系統(tǒng)的實(shí)際業(yè)務(wù)。并且有時(shí)候我們不得不進(jìn)行UI層的測(cè)試。

UI自動(dòng)化的特點(diǎn):

  • 用例維護(hù)量大
  • 頁(yè)面相關(guān)性強(qiáng),必須后期項(xiàng)目頁(yè)面開(kāi)發(fā)完成后介入
  • UI測(cè)試適合與界面變動(dòng)較小的項(xiàng)目

UI層的測(cè)試框架比較多,比如Windows客戶端測(cè)試的AutoIT,web測(cè)試的selenium以及TestPlant ,eggPlant,Robot framework,QTP等。

1.3.1 UI自動(dòng)化測(cè)試的優(yōu)點(diǎn)

降低大型系統(tǒng)的由于變更或者多期開(kāi)發(fā)引起的大量的回歸測(cè)試的人力投入,這可能是自動(dòng)化測(cè)試最主要的任務(wù),特別是在程序修改比較頻繁,效果是非常明顯的,自動(dòng)化測(cè)試前期人力投入較多,但后期進(jìn)入維護(hù)期后,可節(jié)省大量人力,而手工測(cè)試后期需要增加大量人力用于回歸測(cè)試

  • 減少重復(fù)測(cè)試的時(shí)間,實(shí)現(xiàn)快速回歸測(cè)試
  • 創(chuàng)建優(yōu)良可靠的測(cè)試過(guò)程,減少人為錯(cuò)誤
  • 可以運(yùn)行更多更繁瑣的測(cè)試
  • 可以執(zhí)行一些手工測(cè)試?yán)щy或不可能進(jìn)行的測(cè)試
  • 更好的利用資源
  • 測(cè)試腳本的復(fù)用性

1.3.2 UI自動(dòng)化測(cè)試的適用對(duì)象

實(shí)施自動(dòng)化測(cè)試的前提條件:需求變動(dòng)不頻繁、項(xiàng)目周期足夠長(zhǎng)、自動(dòng)化測(cè)試腳本可重復(fù)使用。

適合做自動(dòng)化的項(xiàng)目:

  • 產(chǎn)品型項(xiàng)目。產(chǎn)品型的項(xiàng)目,新版本是在舊版本的基礎(chǔ)上進(jìn)行改進(jìn),功能變不大的項(xiàng)目,但項(xiàng)目的新老功能都必須重復(fù)的進(jìn)行回歸測(cè)試?;貧w測(cè)試是自動(dòng)化測(cè)試的強(qiáng)項(xiàng),它能夠很好的驗(yàn)證你是否引入了新的缺陷,老的缺陷是否修改過(guò)來(lái)了。在某種程度上可以把自動(dòng)化測(cè)試工具叫做回歸測(cè)試工具。
  • 機(jī)械并頻繁的測(cè)試。每次需要輸入相同、大量的一些數(shù)據(jù),并且在一個(gè)項(xiàng)目中運(yùn)行的周期比較長(zhǎng)。比如兼容性測(cè)試。

以下情況的項(xiàng)目不適合做自動(dòng)化測(cè)試:

  • 需求變動(dòng)頻繁的項(xiàng)目,自動(dòng)化腳本不能重復(fù)使用,維護(hù)成本太大,性價(jià)比低
  • 項(xiàng)目周期短,自動(dòng)化腳本編制完成后使用次數(shù)不多,性價(jià)比低
  • 交互型較強(qiáng)的項(xiàng)目,需要人工干預(yù)的項(xiàng)目,自動(dòng)化無(wú)法實(shí)施

1.4 自動(dòng)化測(cè)試流程

  • 分析:總體把握系統(tǒng)邏輯,分析出系統(tǒng)的核心體系架構(gòu)。
  • 設(shè)計(jì):設(shè)計(jì)測(cè)試用例,測(cè)試用例要足夠明確和清晰,覆蓋面廣而精
  • 實(shí)現(xiàn):實(shí)現(xiàn)腳本,有兩個(gè)要求一是斷言,二是合理的運(yùn)用參數(shù)化。
  • 執(zhí)行:執(zhí)行腳本遠(yuǎn)遠(yuǎn)沒(méi)有我們想象中那么簡(jiǎn)單。腳本執(zhí)行過(guò)程中的異常需要我們仔細(xì)的去分析原因。
  • 總結(jié):測(cè)試結(jié)果的分析,和測(cè)試過(guò)程的總結(jié)是自動(dòng)化測(cè)試的關(guān)鍵。
  • 維護(hù):自動(dòng)化測(cè)試腳本的維護(hù)是一個(gè)難以解決但又必須要解決的問(wèn)題。
  • 分析:在自動(dòng)化測(cè)試過(guò)程中深刻的分析自動(dòng)化用例的覆蓋風(fēng)險(xiǎn)和腳本維護(hù)的成本。

2 selenium

Selenium是web應(yīng)用中基于UI的自動(dòng)化測(cè)試框架,支持多平臺(tái)、多瀏覽器、多語(yǔ)言。

早期的selenium RC已經(jīng)被現(xiàn)在的webDriver所替代,可以簡(jiǎn)單的理解為selenium1.0 +webdriver構(gòu)成,現(xiàn)在的Selenium2.0?,F(xiàn)在我們說(shuō)起selenium,一般指的是Selenium2.0。它有由Selenium IDE,Webdriver,Selenium Grid組成。

分別做一下介紹:

Selenium IDE

Selenium IDE一個(gè)用于Selenium測(cè)試的完成集成開(kāi)發(fā)環(huán)境,可以直接錄制在瀏覽器的用戶操作,并且能回放,編輯和調(diào)試測(cè)試腳本。調(diào)試過(guò)程中可以逐步進(jìn)行或調(diào)整執(zhí)行的速度,并且可以在底部瀏覽日志出錯(cuò)信息。錄制的測(cè)試腳本可以以多種語(yǔ)言導(dǎo)出,比如java,C#,Python,Ruby等,方便掌握不同語(yǔ)言的測(cè)試人員操作。Webdriver

Selenium RC 在瀏覽器中運(yùn)行 JavaScript 應(yīng)用,會(huì)存在環(huán)境沙箱問(wèn)題,而WebDriver可以跳出JavaScript的沙箱,針對(duì)不同的瀏覽器創(chuàng)建更健壯的,分布式的,跨平臺(tái)的自動(dòng)化測(cè)試腳本?;谔囟ㄕZ(yǔ)言(Java,C#,Python,Ruby,Perl,JavaScript等)綁定來(lái)驅(qū)動(dòng)瀏覽器對(duì)Web元素進(jìn)行操作和驗(yàn)證。

webdriver的工作原理:

  • 啟動(dòng)瀏覽器后,selenium-webdriver會(huì)將目標(biāo)瀏覽器綁定到特定的端口,啟動(dòng)后的瀏覽器則作為webdriver的remote server。
  • 客戶端(也就是測(cè)試腳本),借助ComandExecutor發(fā)送HTTP請(qǐng)求給sever端(通信協(xié)議:The WebDriver Wire Protocol,在HTTP request的body中,會(huì)以WebDriver Wire協(xié)議規(guī)定的JSON格式的字符串來(lái)告訴Selenium我們希望瀏覽器接下來(lái)做什么事情)。
  • Sever端需要依賴原生的瀏覽器組件,轉(zhuǎn)化Web Service的命令為瀏覽器native的調(diào)用來(lái)完成操作。

selenium Grid

selenium Grid是一個(gè)服務(wù)器,提供對(duì)瀏覽器實(shí)例訪問(wèn)的服務(wù)器列表,管理各個(gè)節(jié)點(diǎn)的注冊(cè)和狀態(tài)信息??梢詫?shí)現(xiàn)在同一時(shí)刻不同服務(wù)器上執(zhí)行不同的測(cè)試腳本。

3 selenium IDE 錄制腳本

打開(kāi)Edge-插件-選擇selenium IDE:

創(chuàng)建一個(gè)新項(xiàng)目,此時(shí)左部 Test Case 窗口會(huì)有一個(gè)Untitled 的測(cè)試案例,右鍵點(diǎn)擊重命名為”test”

點(diǎn)擊 IDE 的右上部錄制按鈕(小紅點(diǎn))開(kāi)始手動(dòng)錄制

在地址欄中輸入待測(cè)試的網(wǎng)址( 禪道)如http://www.baidu.com,搜索關(guān)鍵詞,這時(shí)可以看到IDE進(jìn)行了錄制操作。

在頁(yè)面中點(diǎn)擊右鍵,可以增加檢查點(diǎn)。

錄制結(jié)束后,點(diǎn)擊錄制按鈕(小紅點(diǎn)),結(jié)束本次手動(dòng)錄制。在selenium IDE 中,選中一個(gè) Test Case,右擊選擇“Export 導(dǎo)出為test.py文件。

將該腳本在python中運(yùn)行并調(diào)試。

# Generated by Selenium IDE
import pytest
import time
import json
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.support import expected_conditions
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
class TestTest():
  def setup_method(self, method):
    self.driver = webdriver.Chrome()
    self.vars = {}
  def teardown_method(self, method):
    self.driver.quit()
  def test_test(self):
    self.driver.get("https://www.baidu.com/")
    self.driver.set_window_size(809, 864)
    self.driver.find_element(By.ID, "kw").click()
    self.driver.execute_script("window.scrollTo(0,0)")
    self.driver.find_element(By.ID, "kw").send_keys("四月是你的謊言")
    self.driver.find_element(By.ID, "su").click()

至此,我們就完成了一個(gè)test case的生成

到此這篇關(guān)于Python自動(dòng)化測(cè)試?yán)鱯elenium詳解的文章就介紹到這了,更多相關(guān)Python selenium內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • anaconda如何創(chuàng)建和刪除環(huán)境

    anaconda如何創(chuàng)建和刪除環(huán)境

    這篇文章主要介紹了anaconda如何創(chuàng)建和刪除環(huán)境,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-04-04
  • Python內(nèi)建函數(shù)之raw_input()與input()代碼解析

    Python內(nèi)建函數(shù)之raw_input()與input()代碼解析

    這篇文章主要介紹了Python內(nèi)建函數(shù)之raw_input()與input()代碼解析,具有一定參考價(jià)值,需要的朋友可以了解下。
    2017-10-10
  • python查看微信好友是否刪除自己

    python查看微信好友是否刪除自己

    這篇文章主要為大家詳細(xì)介紹了python查看微信好友是否刪除自己,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-12-12
  • 超詳細(xì)Python解釋器新手安裝教程

    超詳細(xì)Python解釋器新手安裝教程

    這篇文章主要介紹了超詳細(xì)Python解釋器新手安裝教程,文中有非常詳細(xì)的圖文示例,對(duì)不會(huì)安裝python解釋器的小伙伴們很有幫助喲,需要的朋友可以參考下
    2021-05-05
  • Python求凸包及多邊形面積教程

    Python求凸包及多邊形面積教程

    這篇文章主要介紹了Python求凸包及多邊形面積教程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-04-04
  • python3安裝及pip3報(bào)ERROR:No?matching?distribution?found?for解決方法

    python3安裝及pip3報(bào)ERROR:No?matching?distribution?found?for解

    這篇文章主要給大家介紹了關(guān)于python3安裝及pip3報(bào)ERROR:No?matching?distribution?found?for解決的相關(guān)資料,文中通過(guò)代碼以及圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2023-08-08
  • Python存儲(chǔ)或讀取json時(shí)如何引入額外的雙引號(hào)和轉(zhuǎn)義引號(hào)

    Python存儲(chǔ)或讀取json時(shí)如何引入額外的雙引號(hào)和轉(zhuǎn)義引號(hào)

    這篇文章主要介紹了Python存儲(chǔ)或讀取json時(shí)如何引入額外的雙引號(hào)和轉(zhuǎn)義引號(hào)問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-06-06
  • python中pygame安裝過(guò)程(超級(jí)詳細(xì))

    python中pygame安裝過(guò)程(超級(jí)詳細(xì))

    這篇文章主要介紹了python中pygame安裝過(guò)程(超級(jí)詳細(xì)),非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-08-08
  • 最新評(píng)論