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

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

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

1. 主流框架的認(rèn)識

image.png

總結(jié):

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

2. Playwright認(rèn)識

Playwright簡介

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

Playwright優(yōu)勢

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

1)腳本錄制

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

操作步驟:

  • 第一步:pycharm--Terminal中輸入命令:playwright codegen,會自動打開瀏覽器和Playwright Inspector工具,Playwright Inspector工具自動開啟錄制功能
  • 第二步:在打開的瀏覽器中進(jìn)行相關(guān)的操作,如訪問地址、點(diǎn)擊或輸入操作
  • 第三步:操作完成后,在Playwright Inspector中點(diǎn)擊Record停止錄制,然后復(fù)制代碼即可
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("用戶名/郵箱/手機(jī)號").click()
    page.get_by_placeholder("用戶名/郵箱/手機(jī)號").fill("kemi")
    page.get_by_placeholder("用戶名/郵箱/手機(jī)號").press("Tab")
    page.get_by_placeholder("密碼").fill("123456")
    page.pause()  # 斷點(diǎn)調(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 表達(dá)式來查找元素,例如:element = page.get_by_xpath("//div[@class='my-class']")
  • get_by_label: 根據(jù)label屬性值查找元素,類似于HTML中的label標(biāo)簽和對應(yīng)的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表達(dá)式定位元素:使用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]")定位。
  • 通過標(biāo)簽名定位元素:使用page.locator("tag=tag-name")定位。

4. Pytest+Allure+Playwright完整項(xiàng)目演示

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

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

操作步驟:

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

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("用戶名/郵箱/手機(jī)號").click()
    page.get_by_placeholder("用戶名/郵箱/手機(jī)號").fill("kemi")
    page.get_by_placeholder("用戶名/郵箱/手機(jī)號").press("Tab")
    page.get_by_placeholder("密碼").fill("123456")
    page.get_by_role("button", name="登錄").click()

執(zhí)行用例前必須先安裝插件,否則會報(bào)錯,因?yàn)橛美挥泻诵牡臉I(yè)務(wù)操作,沒有瀏覽器、上下文、頁面的初始化,裝了插件后會自動做這些初始化的操作,從而執(zhí)行用例不會報(bào)錯。命令:pip install pytest-playwright

image.png

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

集合pytest的parametrize實(shí)現(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("用戶名/郵箱/手機(jī)號").click()
    page.get_by_placeholder("用戶名/郵箱/手機(jī)號").fill(username)
    page.get_by_placeholder("用戶名/郵箱/手機(jī)號").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)報(bào)告顯示

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

image.png

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

相關(guān)文章

  • keras中的卷積層&池化層的用法

    keras中的卷積層&池化層的用法

    這篇文章主要介紹了keras中的卷積層&池化層的用法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-05-05
  • 使用Python生成200個(gè)激活碼的實(shí)現(xiàn)方法

    使用Python生成200個(gè)激活碼的實(shí)現(xiàn)方法

    這篇文章主要介紹了使用Python生成200個(gè)激活碼的實(shí)現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-11-11
  • PyCharm代碼整體縮進(jìn),反向縮進(jìn)的方法

    PyCharm代碼整體縮進(jìn),反向縮進(jìn)的方法

    今天小編就為大家分享一篇PyCharm代碼整體縮進(jìn),反向縮進(jìn)的方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-06-06
  • python 多線程應(yīng)用介紹

    python 多線程應(yīng)用介紹

    python可以方便地支持多線程??梢钥焖賱?chuàng)建線程、互斥鎖、信號量等等元素,支持線程讀寫同步互斥
    2012-12-12
  • 基于python(urlparse)模板的使用方法總結(jié)

    基于python(urlparse)模板的使用方法總結(jié)

    下面小編就為大家?guī)硪黄趐ython(urlparse)模板的使用方法總結(jié)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-10-10
  • Python中字典的淺拷貝與深拷貝用法實(shí)例分析

    Python中字典的淺拷貝與深拷貝用法實(shí)例分析

    這篇文章主要介紹了Python中字典的淺拷貝與深拷貝用法,結(jié)合實(shí)例形式分析了字典淺拷貝與深拷貝的原理、區(qū)別與使用方法,需要的朋友可以參考下
    2018-01-01
  • Python中捕獲鍵盤的方式詳解

    Python中捕獲鍵盤的方式詳解

    這篇文章主要介紹了Python中捕獲鍵盤的方式,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03
  • 詳解Python計(jì)算機(jī)視覺 圖像扭曲(仿射扭曲)

    詳解Python計(jì)算機(jī)視覺 圖像扭曲(仿射扭曲)

    這篇文章主要介紹了Python計(jì)算機(jī)視覺 圖像扭曲(仿射扭曲),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03
  • AI與Python人工智能遺傳算法

    AI與Python人工智能遺傳算法

    這篇文章主要為大家介紹了AI與Python人工智能遺傳算法的詳解教程,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-05-05
  • Python操作excel文件與csv文件方法詳解

    Python操作excel文件與csv文件方法詳解

    這篇文章主要介紹了Python操作excel文件與csv文件方法,csv文件可以直接通過excel打開,以行列保存顯示文件,相比與excel來說它只能保存數(shù)據(jù),不能保存公式和函數(shù),然而python處理兩種文件的方式大同小異,感興趣的朋友可以參考下
    2023-12-12

最新評論