playwright結合pytest使用案例


playwright簡介

  不愧是宇宙最強,它也是目前為止對selenium封裝得最好的一個庫,還有對應的異步機制,其他見百度不便在此詳敘。

  本篇經典案例是對我司的veer產品做ui自動化的案例,可供參考 不謝~

  相關代碼已整理至gitee,https://gitee.com/teark/playest.git,大家自行git clone即可。

 

安裝與啟動

# 安裝 playwright-python 依賴庫 
pip install playwright

# 安裝瀏覽器驅動
python -m playwright install

# 錄制腳本
python -m playwright codegen

  其實我們用的只是錄制腳本里的定位語句,其他的需要自己改寫。如下:

 

page層

class IndexPage:
    # 頁面元素
    url = "https://preview-www.veer.com/"
    popup = "i"
    search_box = "[placeholder=\"搜索照片、插畫和矢量圖,多個詞用空格隔開\"]"
    value = "hello world"
    submit = "[class='search_bar_submit']"
    real_flag = "[class='count_label']"
    fail_flag = "共 0 個結果"

  page層最小粒度控制,便於管理元素。

 

testcase層

  具有以下特性(自行體會):

    結合非GUI模式以方便CI/CD

    結合PO模式以方便單獨管理元素

    結合pytest.mark.paramtrize實現參數化

    結合pytest.fixture實現預處理

    結合了日志記錄 + 結果斷言

import time
from playwright.sync_api import Page
from po.index_page import IndexPage as pg
import pytest
from common.log import logger


@pytest.fixture(scope="function")
def preview(page):
    page.goto(pg.url)
    page.click(pg.popup)
    yield page
    page.close()


@pytest.mark.parametrize("word", ["hello world", "星空"])
def test_search(preview: Page, word):
    page = preview
    page.fill(pg.search_box, word)
    page.click(pg.submit)
    time.sleep(1)

    with page.expect_navigation():
        flag = page.text_content(pg.real_flag)
    logger().info(flag)
    assert flag != pg.fail_flag

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM