Playwright+Python+Pytest:基礎方法二次封裝簡化及鏈式調用

引言

隨著Web應用的日益復雜化,自動化測試成為了確保軟件質量的關鍵環節。Playwright 是一個強大的自動化庫,它支持在 Chromium、Firefox 和 WebKit 中運行自動化腳本。本文將介紹如何使用 Playwright 的 Python 同步 API 來簡化點擊和填充操作,并展示如何在 pytest 測試框架中應用這些方法。

Playwright 簡介

Playwright 允許開發者自動化幾乎所有的網頁操作,包括但不限于點擊、填寫表單、導航等。它支持跨瀏覽器測試,并且能夠處理單頁應用(SPA)中的動態內容。

環境準備

在開始之前,請確保你已經安裝了 Python 和 pip。

安裝 Playwright

pip install playwright

安裝內置瀏覽器

playwright install 

編寫 PlaywrightWrapper 類

為了簡化 Playwright 的使用,我們可以編寫一個封裝類 PlaywrightWrapper。這個類將提供啟動瀏覽器、打開新頁面、導航、定位元素、點擊和填充表單的方法。

# wrapper.py
from playwright.sync_api import sync_playwrightclass PlaywrightWrapper:def __init__(self):self.playwright = sync_playwright().start()self.browser = Noneself.page = Nonedef launch_browser(self, browser_type="chromium", headless=False):self.browser = self.playwright[browser_type].launch(headless=headless)return selfdef new_page(self):self.page = self.browser.new_page()return selfdef navigate(self, url: str):self.page.goto(url)return selfdef locator(self, selector: str):return self.page.locator(selector)def click(self, selector: str):self.locator(selector).click()return selfdef fill(self, selector: str, value: str):self.locator(selector).fill(value)return selfdef close(self):if self.browser:self.browser.close()self.playwright.stop()return self

使用 pytest 進行測試

現在我們已經有了 PlaywrightWrapper 類,接下來我們將展示如何在 pytest 測試框架中使用它。

首先,pytest fixture 來初始化、打開頁面和關閉自動化環境:

# conftest.py
import pytest
from common.wrapper import PlaywrightWrapper# 定義page fixture
@pytest.fixture(scope="session")
def page():page = PlaywrightWrapper()yield pagepage.close()# 打開頁面fixture
@pytest.fixture(scope="session", autouse=True)
def open_page(page):page.launch_browser().new_page().navigate("https://www.baidu.com/")

然后,編寫測試用例:

# test_case.py
def test_case(page):page.fill("input#kw", "CSDN blues_C").click("[type='submit']").click("a >> text='blues_C' >> nth=0").wait_for_timeout(20)

最后,運行測試:

pytest .\test_case.py 

在這里插入圖片描述

結語

通過封裝 Playwright 的操作,我們能夠編寫出更簡潔、更一致的自動化測試腳本。使用 pytest fixture 可以方便地管理測試環境的初始化和清理工作。這樣,我們就能夠專注于測試邏輯本身,而不是測試環境的搭建。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/22945.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/22945.shtml
英文地址,請注明出處:http://en.pswp.cn/web/22945.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

阿里云郵件推送配置教程:API配置的步驟?

阿里云郵件推送服務如何使用?如何配置郵件推送服務? 阿里云提供了強大的郵件推送服務,幫助企業高效地發送郵件通知、驗證碼、營銷活動等。Aok將詳細介紹阿里云郵件推送的配置教程,以及API配置的步驟,同時簡要提及AokS…

數據流圖要點和難點實際應用

數據流圖(Data Flow Diagram,DFD)是一種圖形化表示信息系統中數據流動和處理的方式。它主要用于描述系統如何接收輸入數據,經過一系列的處理步驟,然后產生輸出數據。數據流圖在系統設計階段特別有用,因為它可以幫助開發人員、業務分析師和其他利益相關者更好地理解系統的…

Python字符串數據類型之字符串

四、Python數據類型 4.1、Python內置數據類型 整型:int浮點型:float布爾類型:bool字符串:str二進制類型:bytes、bytearray復數:complex列表:list元組:tuple字典:dict a…

C#WPF控件Textbox綁定浮點型數據限制小數位方法

本文講解C#WPF控件Textbox綁定浮點型數據限制小數位方法。 XAML中,使用StringFormat來格式化TextBox的文本 <Window x:Class="WpfApp.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.m…

【使用 uiautomator2 腳本進行波點音樂app自動化操作的教程】

本教程將指導您使用 uiautomator2 庫編寫腳本&#xff0c;實現自動化操作。如果您需要在設備斷開連接或出現異常時重新連接設備并繼續執行任務&#xff0c;這里有一份詳細的代碼示例和使用說明。 環境準備 安裝 Python&#xff1a; 確保您的系統上安裝了 Python&#xff08;推…

[數據集][目標檢測]盲道檢測數據集VOC+YOLO格式2173張1類別

數據集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路徑的txt文件&#xff0c;僅僅包含jpg圖片以及對應的VOC格式xml文件和yolo格式txt文件) 圖片數量(jpg文件個數)&#xff1a;2173 標注數量(xml文件個數)&#xff1a;2173 標注數量(txt文件個數)&#xff1a;2173 標注…

基于R語言BIOMOD2 及機器學習方法的物種分布模擬與案例分析實踐技術

BIOMOD2是一個R軟件包&#xff0c;用于構建和評估物種分布模型&#xff08;SDMs&#xff09;。它集成了多種統計和機器學習方法&#xff0c;如GLM、GAM、SVM等&#xff0c;允許用戶預測和分析物種在不同環境條件下的地理分布。通過這種方式&#xff0c;BIOMOD幫助研究者評估氣候…

常用接口測試及接口抓包常用的測試工具

一、常用抓包工具 01、F12 Web端的話&#xff0c;google瀏覽器直接F12開發者模式 點擊network進行抓包分析。 02、Fiddler抓包工具 客戶端和服務端的http代理&#xff0c;客戶端所有的請求都要先經過Fiddler&#xff0c;到響應的服務端&#xff0c;然后端返回的所有數據也都…

pytorch數學操作

文章目錄 1.torch.bitwise_not()2.torch.bitwise_and()3.torch.ceil()3.torch.clamp()4.torch.torch.floor() 1.torch.bitwise_not() 在 PyTorch 中&#xff0c;torch.bitwise_not() 是一個函數&#xff0c;用于執行逐元素的位非&#xff08;bitwise NOT&#xff09;操作。 t…

如何組織基于Sqlalchemy的項目

在使用 SQLAlchemy 構建項目時&#xff0c;可以遵循一些常用的組織結構和最佳實踐&#xff0c;以確保項目清晰、易于維護。下面就是我在構建項目時遇到的一些問題&#xff0c;并做了詳細的記錄&#xff0c;為了方便大家學習少走一些彎路。 1、問題背景 在基于Sqlalchemy的項目…

IDEA的使用配置Maven(及selenium+webdriver的下載配置)

一. 下載maven 1. maven官網下載鏈接 2.??安裝第二行第一列的zip壓縮包 ???????? 二. 配置環境變量 1.新建環境變量 2.在系統變量Path環境變量中添加%Maven_HOME%\bin 三.驗證環境變量是否配置成功 winr >cmd>mvn -v 如果出現Maven的版本信息&#xff0…

Matlab解決矩陣微分方程建模(代碼開源)

#用matlab解決施密特正交規范化矩陣之后&#xff0c;我又想到矩陣的微分方程計算量真的太大了&#xff0c;來回轉化讓我頭大&#xff0c;于是我嘗試了一下用matlab建立模型來解決這類問題。 代碼部分如下&#xff1a;注解還挺清晰的&#xff1a; %%%解微分方程組%eg&#xff…

【設計模式】代理模式(結構型)???

文章目錄 1.概念1.1 什么是代理模式1.2 優點與缺點 2.實現方式2.1 靜態代理2.2 動態代理 3. Java 哪些地方用到了代理模式4. Spring 哪些地方用到了代理模式 1.概念 1.1 什么是代理模式 代理模式&#xff08;Proxy Pattern&#xff09;是一種結構型設計模式&#xff0c;它允許…

帶你認識ffmpeg

FFmpeg是一個開源的跨平臺音視頻處理工具集&#xff0c;它提供了豐富的音視頻處理功能和庫&#xff0c;被廣泛應用于音視頻編解碼、格式轉換、流媒體處理等領域。 應用場景&#xff1a; 視頻編解碼&#xff1a;FFmpeg可以對各種視頻格式進行編解碼&#xff0c;包括但不限于AV…

類的特殊成員函數

使用類的嵌套&#xff0c;并自定義析構函數 #include <iostream>using namespace std; class Per{ private:string name;int age;double hight;double weight; public:Per(string name,int age,double hight,double weight):name(name),age(age),hight(hight),weight(we…

圖片如何修改尺寸?四種好用的修改圖片尺寸方法!

圖片如何修改尺寸&#xff1f;圖片是一種常見的文件類型&#xff0c;它存在于什么生活的方方面面&#xff0c;雖然圖片很好用&#xff0c;但是大家日常也要注意圖片的尺寸&#xff0c;如果圖片尺寸不對是會帶來很多問題的&#xff0c;下面小編就舉例說明幾個問題&#xff0c;首…

web 前端技術的一些知識點分享~

css的規則是由選擇器和 組成的 目錄 css的規則是由選擇器和 組成的 CSS&#xff08;層疊樣式表&#xff09;的規則是由選擇器和聲明塊組成的。 選擇器用于選定頁面上的元素&#xff0c;這可以是一個元素標簽&#xff08;如 h1&#xff09;、類&#xff08;如 .classname…

Unity 自定義房間布局系統 設計與實現一個靈活的房間放置系統 ——物體占用的區域及放置點自動化

放置物體功能 效果&#xff1a; 功能&#xff1a; 自定義物體占用區域的大小一鍵調整占用區域調整旋轉度數&#xff0c;分四個擋位&#xff1a; NoRotation&#xff1a;該物體不能調整旋轉。MaximumAngle&#xff1a;每次轉動90。NormalAngle&#xff1a;每次轉動45&#xff…

根據租戶id切換數據源

花了半天時間&#xff0c;使用spring-boot實現動態數據源&#xff0c;切換自如 在一個項目中使用多個數據源的情況很多&#xff0c;所以動態切換數據源是項目中標配的功能&#xff0c;當然網上有相關的依賴可以使用&#xff0c;比如動態數據源&#xff0c;其依賴為&#xff0c;…

銀河麒麟解壓命令

銀河麒麟&#xff08;Kylin&#xff09;操作系統是基于Linux的操作系統分支之一&#xff0c;其使用的解壓命令與Linux系統中的命令基本相同。 在銀河麒麟系統中&#xff0c;常用的解壓命令有以下幾種&#xff1a; 對于.tar文件&#xff1a; tar -xvf file.tar對于.tar.gz或.…