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

Playwright中Web自動化測試的實現(xiàn)

 更新時間:2024年03月27日 10:30:30   作者:程序員與詩人  
Playwright是一個現(xiàn)代的Web自動化測試框架,本文主要介紹了Playwright中Web自動化測試的實現(xiàn),具有一定的參考價值,感興趣的可以了解一下

1. 主流框架的認識

image.png

總結(jié):

  • 由于Selenium在3.x和4.x兩個版本的迭代中并沒有發(fā)生多大的變化,因此Selenium一統(tǒng)天下的地位可能因新框架的出現(xiàn)而變得不那么穩(wěn)固。
  • 后續(xù)的Cypress、TestCafe、Puppeteer被譽為后Selenium時代Web UI自動化的三駕馬車。但是由于這三個框架都是基于JavaScript開發(fā)的,且都不支持Python,所以使用率并沒有很高。
  • playwright則是綜合了上述框架的優(yōu)點,提供了很好的體驗,將來可能成為流行的趨勢。

2. Playwright認識

Playwright簡介

  • 2020年,微軟(Microsoft)開源了一個名為Playwright的工具,與Selenium一樣入門簡單,支持多語言(Python、Java、Node.js、.NET),支持多瀏覽器(Chromium、Firefox、Webkit),可跨平臺(Windwos、Linux、Mac OS)
  • Playwright同時支持接口自動化和UI自動化,為現(xiàn)代web應用提供了可靠的端到端的測試能力。

Playwright優(yōu)勢

  • 1)自動等待功能讓自動化更可靠
  • 2)自動追蹤:可以很方便地配置重試策略,自動的追蹤結(jié)果,以截圖和錄屏的方式進行記錄。
  • 3)斷言機制:會根據(jù)網(wǎng)絡環(huán)境進行自動斷言,直到滿足某種條件為止。
  • 4)異步執(zhí)行:Playwright基于socket進行雙向通訊,支持同步與異步執(zhí)行兩種方式
  • 5)可運行多頁仿真場景:Playwright是通過上下文管理瀏覽器,相當于每一個測試用例都會創(chuàng)建一個獨立的上下文,瀏覽器的上下文其實就是一個全新的瀏覽器,這種方式的好處就是在提速的同時又實現(xiàn)測試與測試之間的隔離,使得測試結(jié)果更加準確,所以可以實現(xiàn)并行執(zhí)行。
  • 6)強大的工具集:還我們提供了強大的工具集,例如:腳本錄制工具codegen、腳本編寫以及調(diào)試工具playwright等

3. Playwright環(huán)境搭建

Python環(huán)境:python解釋器+IDE工具,不知道怎么安裝的可參考: python3.4 + pycharm 環(huán)境安裝 + pycharm 使用

Playwright環(huán)境:

安裝Playwright:pip install playwright -i https://pypi.tuna.tsinghua.edu.cn/simple

image.png

安裝內(nèi)置瀏覽器(chromium,firefox,webkit):playwright install

image.png

4. Playwright入門實戰(zhàn)

1)腳本錄制

案例1:實現(xiàn)Web ui自動化,打開瀏覽器,訪問測試派,點擊登錄后在進行登錄操作(輸入用戶名、密碼,點擊登錄按鈕)

操作步驟:

  • 第一步:pycharm--Terminal中輸入命令:playwright codegen,會自動打開瀏覽器和Playwright Inspector工具,Playwright Inspector工具自動開啟錄制功能
  • 第二步:在打開的瀏覽器中進行相關(guān)的操作,如訪問地址、點擊或輸入操作
  • 第三步:操作完成后,在Playwright Inspector中點擊Record停止錄制,然后復制代碼即可
from playwright.sync_api import Playwright, sync_playwright, expect

def run(playwright: Playwright) -> None:
    browser = playwright.chromium.launch(headless=False)
    context = browser.new_context()
    page = context.new_page()
    page.goto("http://175.178.53.95:8081/")
    page.get_by_text("登錄").click()
    page.get_by_placeholder("用戶名/郵箱/手機號").click()
    page.get_by_placeholder("用戶名/郵箱/手機號").fill("kemi")
    page.get_by_placeholder("用戶名/郵箱/手機號").press("Tab")
    page.get_by_placeholder("密碼").fill("123456")
    page.pause()  # 斷點調(diào)試功能
    page.get_by_role("button", name="登錄").click()

    # ---------------------
    context.close()
    browser.close()


with sync_playwright() as playwright:
    run(playwright)

2)錄制工具快速定位元素

如果我自己寫代碼,需要定位元素,通過Playwright Inspector工具的Pick locator可以快速獲取元素定位的信息,具體操作如下截圖:

image.png

Playwright支持兩大類元素定位方式,包括:

1)get_by方式

  • get_by_id: 通過元素的 id 屬性來查找元素,例如:element = page.get_by_id("my-id")
  • get_by_name: 通過元素的 name 屬性來查找元素,例如:element = page.get_by_name("my-name")
  • get_by_text: 通過元素的文本內(nèi)容來查找元素,例如:element = page.get_by_text("Submit")
  • get_by_title: 通過元素的 title 屬性來查找元素,例如:element = page.get_by_title("my-title")
  • get_by_placeholder: 通過元素的 placeholder 屬性來查找元素,例如:element = page.get_by_placeholder("my-placeholder")
  • get_by_selector: 通過 CSS 選擇器來查找元素,例如:element = page.get_by_selector("#submit-button")
  • get_by_xpath: 通過 XPath 表達式來查找元素,例如:element = page.get_by_xpath("//div[@class='my-class']")
  • get_by_label: 根據(jù)label屬性值查找元素,類似于HTML中的label標簽和對應的for屬性。
  • get_by_role: 通過角色方式定位元素,例如:element = page.get_by_role("button", name="Submit")

2)page.locator方式

  • 通過ID定位元素:使用page.locator("#element-id")page.locator('id=element-id')定位。
  • 通過CSS選擇器定位元素:使用page.locator("css=selector")定位。例如:element = page.locator("button#submit-button")
  • 通過XPath表達式定位元素:使用page.locator("xpath=expression")定位。例如:element = page.locator("//button[@id='submit-button']")
  • 通過名稱定位元素:使用page.locator("name=element-name")定位。
  • 通過鏈接文本定位元素:使用page.locator("text=link-text")定位。
  • 通過部分鏈接文本定位元素:使用page.locator("partial_text=partial-link-text")定位。
  • 通過元素屬性定位元素:使用page.locator("[attribute=value]")定位。
  • 通過標簽名定位元素:使用page.locator("tag=tag-name")定位。

4. Pytest+Allure+Playwright完整項目演示

1)腳本轉(zhuǎn)為測試用例

案例需求:將上面測試派的登錄操作轉(zhuǎn)為測試用例

操作步驟:

  • 第一步:pycharm--Terminal中輸入命令:playwright codegen,會自動打開瀏覽器和Playwright Inspector工具,Playwright Inspector工具自動開啟錄制功能
  • 第二步:在打開的瀏覽器中進行相關(guān)的操作,如訪問地址、點擊或輸入操作
  • 第三步:操作完成后,在Playwright Inspector中點擊Record停止錄制
  • 第四步:在Target中選擇Python下的pytest,就會自動化將錄制的代碼轉(zhuǎn)為測試用例,然后復制代碼即可。具體操作如下截圖所示:

image.png

代碼如下:

from playwright.sync_api import Page, expect

def test_example(page: Page) -> None:
    page.goto("http://175.178.53.95:8081/")
    page.get_by_text("登錄").click()
    page.get_by_placeholder("用戶名/郵箱/手機號").click()
    page.get_by_placeholder("用戶名/郵箱/手機號").fill("kemi")
    page.get_by_placeholder("用戶名/郵箱/手機號").press("Tab")
    page.get_by_placeholder("密碼").fill("123456")
    page.get_by_role("button", name="登錄").click()

執(zhí)行用例前必須先安裝插件,否則會報錯,因為用例只有核心的業(yè)務操作,沒有瀏覽器、上下文、頁面的初始化,裝了插件后會自動做這些初始化的操作,從而執(zhí)行用例不會報錯。命令:pip install pytest-playwright

image.png

2)數(shù)據(jù)驅(qū)動

集合pytest的parametrize實現(xiàn)數(shù)據(jù)驅(qū)動

import pytest
from playwright.sync_api import Page, expect

# 測試用例數(shù)據(jù)
case_data = [{'caseid':1,'username':'kemi123', 'password':'kemi123'},
             {'caseid':2,'username':'zhangsan', 'password':'123456'},
             {'caseid':3,'username':'lisi', 'password':'123456'}]

# 數(shù)據(jù)驅(qū)動
@pytest.mark.parametrize('case', case_data)
def test_example(page: Page,case) -> None:
    username = case['username']
    password = case['password']

    page.goto("http://175.178.53.95:8081/")
    page.get_by_text("登錄").click()
    page.get_by_placeholder("用戶名/郵箱/手機號").click()
    page.get_by_placeholder("用戶名/郵箱/手機號").fill(username)
    page.get_by_placeholder("用戶名/郵箱/手機號").press("Tab")
    page.get_by_placeholder("密碼").fill(password)
    page.get_by_role("button", name="登錄").click()
    page.screenshot(path=f"images/login/登錄{case['caseid']}.png")  # 截圖保存到指定位置

3)報告顯示

通過pytest執(zhí)行用例后,通過命令生成報告:allure serve outputs/allure,查看報告顯示,截圖如下:

image.png

到此這篇關(guān)于Playwright中Web自動化測試的實現(xiàn)的文章就介紹到這了,更多相關(guān)Playwright Web自動化測試內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • tensorflow輸出權(quán)重值和偏差的方法

    tensorflow輸出權(quán)重值和偏差的方法

    本篇文章主要介紹了tensorflow輸出權(quán)重值和偏差的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-02-02
  • pytorch通過訓練結(jié)果的復現(xiàn)設(shè)置隨機種子

    pytorch通過訓練結(jié)果的復現(xiàn)設(shè)置隨機種子

    這篇文章主要介紹了pytorch通過訓練結(jié)果的復現(xiàn)設(shè)置隨機種子的操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-06-06
  • Pycharm實現(xiàn)卸載已有版本重新安裝一個新版本

    Pycharm實現(xiàn)卸載已有版本重新安裝一個新版本

    文章主要記錄了卸載舊版PyCharm并重新安裝新版(2019.3),同時配置Anaconda環(huán)境的過程,包括下載安裝、配置環(huán)境、創(chuàng)建新項目以及檢測環(huán)境是否正確等內(nèi)容
    2026-05-05
  • python 中 __init__的意義以及作用

    python 中 __init__的意義以及作用

    python中的__init__是一個私有函數(shù)(方法),訪問私有函數(shù)中的變量在python中用self,在PHP中用$this,這篇文章主要介紹了python 中 __init__的意義以及作用,需要的朋友可以參考下
    2023-02-02
  • 詳解Django 時間與時區(qū)設(shè)置問題

    詳解Django 時間與時區(qū)設(shè)置問題

    這篇文章主要介紹了Django 時間與時區(qū)設(shè)置問題,本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-07-07
  • 學習Python爬蟲前必掌握知識點

    學習Python爬蟲前必掌握知識點

    這篇文章主要介紹了學習Python爬蟲前,我們需要了解涉及爬蟲的知識點,學習爬蟲的知識點比較多,我們一起學習爬蟲吧
    2021-04-04
  • python如何生成textgrid文件

    python如何生成textgrid文件

    這篇文章主要介紹了python如何生成textgrid文件,本文通過實例代碼給大家介紹的非常詳細,感興趣的朋友跟隨小編一起看看吧
    2024-07-07
  • 淺析Python中else語句塊的使用技巧

    淺析Python中else語句塊的使用技巧

    這篇文章主要介紹了淺析Python中else語句塊的使用技巧的相關(guān)資料,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2016-06-06
  • Numpy之將矩陣拉成向量的實例

    Numpy之將矩陣拉成向量的實例

    今天小編就為大家分享一篇Numpy之將矩陣拉成向量的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-11-11
  • Python結(jié)合Free?Spire.XLS?for?Python刪除Excel中的空白行列

    Python結(jié)合Free?Spire.XLS?for?Python刪除Excel中的空白行列

    在?Excel?數(shù)據(jù)處理場景中,手動刪除大量空行、空列效率極低,下面我們就來看看Python如何結(jié)合Free?Spire.XLS?for?Python實現(xiàn)自動化清除Excel中的空白行列吧
    2026-02-02

最新評論

焦作市| 高台县| 梁平县| 施秉县| 农安县| 玛纳斯县| 锡林郭勒盟| 霍邱县| 密山市| 浑源县| 德阳市| 喜德县| 黔东| 门头沟区| 昆明市| 兴文县| 临高县| 固始县| 扬州市| 克拉玛依市| 乌鲁木齐市| 徐水县| 稻城县| 筠连县| 象山县| 兴安县| 淳化县| 九寨沟县| 新昌县| 连州市| 高碑店市| 拜城县| 扶余县| 柳江县| 阜宁县| 博爱县| 寿阳县| 永仁县| 河津市| 琼中| 清远市|