Playwright快速上手-1

?

前言

?? ?隨著近年來對UI自動化測試的要求越來越高,,功能強大的測試框架也不斷的涌現。本系列主講的Playwright作為一款新興的端到端測試框架,憑借其獨特優勢,正在逐漸成為測試工程師的熱門選擇。

本系列文章將著重通過示例講解

  1. Playwright + python開發環境的搭建????

  2. 定位方式(重點)

  3. Playwright 的重要API(重點)

  4. Playwright 的 其他重要特性

  5. Playwright +?Python 自動化框架的搭建 (重點)

希望搭建能通過本系列文章的學習,能通過 Playwright +Python 搭建實用的框架解決工作中的實際問題。

1. Playwright 簡介

1.1?Playwright 是什么

? ? ?Playwright 是一個用于瀏覽器自動化和跨瀏覽器測試的開源工具,由 Microsoft Edge 團隊開發。它允許開發者編寫代碼來模擬用戶在不同瀏覽器中的交互,執行頁面操作,處理網絡請求,截取屏幕截圖,生成 PDF 等,從而有效地進行自動化測試和性能測試。

1.2?為什么要學Playwright

  1. 由于Selenium在3.x和4.x兩個版本的迭代中并沒有發生多大的變化,因此Selenium一統天下的地位可能因新框架的出現而變得不那么穩固。

  2. 后續的Cypress、TestCafe、Puppeteer被譽為后Selenium時代Web UI自動化的三駕馬車。但是由于這三個框架都是基于JavaScript開發的,且都不支持Python,所以使用率并沒有很高。

  3. Playwright?則是綜合了上述框架的優點,提供了很好的體驗,將來可能成為流行的趨勢。

1.3?playwright 的特點(優勢)

  1. 多瀏覽器支持:Playwright 支持 Chromium(包括 Chrome 和 Edge)、Firefox 和 WebKit(Safari),這使得您可以在不同瀏覽器中進行測試,確保您的應用在各個瀏覽器上都能正常工作。

  2. 速度與穩定性:Playwright被設計為高性能工具,它在執行頁面操作和網絡請求時非常快速。同時,它還具備穩定性,可以處理各種異步操作和復雜場景。

  3. 功能豐富:Playwright 提供了豐富的 API,可以模擬用戶的各種交互,如點擊、填寫表單、鍵盤輸入等。此外,它還支持錄制和回放操作,方便非開發人員使用。

  4. 并行測試:Playwright 允許在多個瀏覽器實例中并行運行測試,從而加快測試速度。

  5. 跨平臺:Playwright 可以在 Windows、macOS 和 Linux 等多個平臺上運行。

????ps:?上內容均來自官方文檔,想要了解更多關于Playwright?的知識,請參考其官方文檔

2.搭建python + Playwright開發環境

2.1

  1. 安裝python (版本必須 不小于Python3.7)

  2. 安裝Playwright?

    pip?install?playwright
  3. 安裝內置瀏覽器

    python?-m?playwright?install
  4. 驗證是否安裝成功, 只要顯示對應的版本號,即為安裝成功

    playwright -V---Version 1.35.0

2,2 . 入門實戰-腳本錄制

Playwright?自帶的 Playwright Inspector工具 可以像 selenium 和 QTP 一樣,錄制頁面動作,產生腳本,并且能幫您快捷的定位頁面元素。

在終端(或命令行窗口)輸入一下命令

playwright codegen

系統會打開一個瀏覽器,另外會打開一個 Playwright Inspector,如下圖所示?

圖片

在瀏覽器中的所有操作,都會在在 Playwright Inspector 實時的產生代碼,現在就以打開百度,并進行搜索為例,看下Playwright Inspector 所產生的代碼。

在瀏覽器中輸入百度網址, 并在搜索欄中輸入 米蘭, 再在Playwright Inspector 停止錄制(默認開啟的)?

圖片

來看下產生的代碼

rom playwright.sync_api import Playwright, sync_playwright, expectdef run(playwright: Playwright) -> None:    browser = playwright.chromium.launch(headless=False)    context = browser.new_context()    page = context.new_page()????page.goto(百度網址)    page.locator("#kw").fill("米蘭")    page.get_by_role("button", name="百度一下").click()
    # ---------------------    context.close()    browser.close()with sync_playwright() as playwright:    run(playwright)

代碼分析

with sync_playwright() as playwright

這一行代碼表示用同步的方式生成一個playwright對象, 用?with ... as ...?方式參考處理文件的方式, 可以省略?playwright.stop(),上面的代碼 等同于

from playwright.sync_api import sync_playwright
playwright = sync_playwright().start() 
...
...
playwright.stop()

run 函數中的代碼就比較明了了

# 啟動瀏覽器
browser = playwright.chromium.launch(headless=False)
# 打開一個新的頁面
context = browser.new_context()
page = context.new_page()
# 跳轉至 百度
page.goto("百度網址")
# 在搜索框 輸入 米蘭
page.locator("#kw").fill("米蘭")# 點擊 百度一下
page.get_by_role("button", name="百度一下").click()

可以看到,Playwright?的定位方式和 selenium 還是有很大的不同的,下一節就將開始介紹其豐富的定位方式!敬請期待!

作者微信,說明來意,不閑聊,不白嫖。

圖片

?

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

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

相關文章

Linux Day07

一、僵死進程 1.1僵死進程產生的原因 子進程先于父進程結束, 而父進程沒有獲取子進程退出碼,釋放子進程占用的資源,此時子進程將成為一個僵死進程。 在第一個框這里時父進程子進程都沒有結束,顯示其pid 父進程是2349,子進程是235…

【Nginx】Nginx網站服務

國外主流還是使用apache;國內現在主流是nginx(并發能力強,相對穩定) nginx:高性能、輕量級的web服務軟件 特點: 1.穩定性高(沒apache穩); 2.系統資源消耗比較低&#xf…

Failed to set locale, defaulting to C.UTF-8 或者中文系統語言轉英文系統語言

CentOS 8中執行命令,出現報錯:Failed to set locale, defaulting to C.UTF-8報錯原因: 1、沒有安裝相應的語言包。2、沒有設置正確的語言環境。 解決方法1:安裝語言包 設置語言環境需使用命令 localelocale -a 命令,查…

代碼隨想錄day02

977.有序數組的平方 ● 力扣題目鏈接 ● 給你一個按 非遞減順序 排序的整數數組 nums,返回 每個數字的平方 組成的新數組,要求也按 非遞減順序 排序。 思路 ● 暴力排序,時間復雜度O(n nlogn) ● 使用雙指針,時間復雜度O(n) …

Vue中使用v-bind:class動態綁定多個類名

Vue.js是一個流行的前端框架,它可以幫助開發者構建動態交互的UI界面。在Vue.js開發中,經常需要動態綁定HTML元素的class(類名)屬性,以改變元素的外觀和行為。本文將介紹采用v-bind:class指令在Vue中如何動態綁定多個類…

【大數據】-- 本地部署 Flink kubernetes operator

目錄 1.說明 1.1 版本 1.2 kubernetes 環境 1.3 參考 2.安裝步驟 2.1 安裝本地 kubernetes 環境

判斷鏈表有環的證明

目錄 1.問題 2.證明 3.代碼實現 1.問題 給你一個鏈表的頭節點 head ,判斷鏈表中是否有環。 如果鏈表中有某個節點,可以通過連續跟蹤 next 指針再次到達,則鏈表中存在環。 為了表示給定鏈表中的環,評測系統內部使用…

TansUNet代碼理解

首先通過論文中所給的圖片了解網絡的整體架構: vit_seg_modeling部分 模塊引入和定義相關量: # codingutf-8 # __future__ 在老版本的Python代碼中兼顧新特性的一種方法 from __future__ import absolute_import from __future__ import division fr…

新基建助推數字經濟,CosmosAI率先布局AI超算租賃新紀元

倫敦, 8月14日 - 在英國倫敦隆重的Raffles OWO舉辦的歐盟數字超算新時代戰略合作簽約儀式,CosmosAI、Infinite Money Fund與Internet Research Lab三方強強聯手,達成了歷史性的合作協議,共同邁向超算租賃新紀元。 ? 這次跨界的合作昭示了全球…

Session基礎

文章目錄 什么是Sessionsession與cookie的區別和聯系Session的存Session的取 什么是Session 服務器為每個用戶瀏覽器創建一個會話對象(session對象),一個瀏覽器只能產生一個session當新建一個窗口訪問服務器時,還是原來的那個ses…

VR家裝提升用戶信任度,線上體驗家裝空間感

近些年,VR家裝逐漸被各大裝修公司引入,VR全景裝修的盛行,大大增加了客戶“所見即所得”的沉浸式體驗感,不再是傳統二維平面的看房模式,而是讓客戶通過視覺、聽覺、交互等功能更加真實的體驗家裝后的效果。 對于傳統家裝…

本地Linux 部署 Dashy 并遠程訪問教程

文章目錄 簡介1. 安裝Dashy2. 安裝cpolar3.配置公網訪問地址4. 固定域名訪問 轉載自cpolar極點云文章:本地Linux 部署 Dashy 并遠程訪問 簡介 Dashy 是一個開源的自托管的導航頁配置服務,具有易于使用的可視化編輯器、狀態檢查、小工具和主題等功能。你…

JS如何向數組中添加數組

常見的辦法有 1、push()方法 var arr [a, b, c,d]; arr.push(e); console.log(arr); // [a, b, c, d,e] 2、concat()方法 var arr1 [a, b, c]; var arr2 [d, e, f]; var arr3 arr1.concat(arr2); console.log(arr3); // [a, b, c, d, e, f] 3、可以使用ES6中的spread操作符…

【git】Fork或者git clone克隆了別人項目,如何保持與原項目同步更新

Fork或者git clone克隆了別人項目,如何保持與原項目同步更新 #mermaid-svg-LC920CR873UxZJC3 {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-LC920CR873UxZJC3 .error-icon{fill:#552222;}#mermaid-svg-…

BUUCTF 還原大師 1

題目描述: 我們得到了一串神秘字符串:TASC?O3RJMV?WDJKX?ZM,問號部分是未知大寫字母,為了確定這個神秘字符串,我們通過了其他途徑獲得了這個字串的32位MD5碼。但是我們獲得它的32位MD5碼也是殘缺不全,E903???4D…

【Vue3】自動引入插件-`unplugin-auto-import`

Vue3自動引入插件-unplugin-auto-import,不必再手動 import 。 自動導入 api 按需為 Vite, Webpack, Rspack, Rollup 和 esbuild 。支持TypeScript。由unplugin驅動。 插件安裝:unplugin-auto-import 配置vite.config.ts(配置完后需要重啟…

迪瑞克斯拉算法 — 優化

在上一篇迪瑞克斯拉算法中將功能實現了出來,完成了圖集中從源點出發獲取所有可達的點的最短距離的收集。 但在代碼中getMinDistanceAndUnSelectNode()方法的實現并不簡潔,每次獲取minNode時,都需要遍歷整個Map,時間復雜度太高。這…

stable diffusion安裝包和超火使用文檔及提示詞,數字人網址

一:文生圖、圖生圖 1:stable diffusion:對喜歡二次元、美女小姐姐、大眼萌妹的人及其友好哈哈(o^^o) 1):關于安裝包和模型包: 鏈接:https://pan.baidu.com/s/11_kguofh76gwhTBPUipepw 提取碼…

HTML詳解連載(5)

HTML詳解連載(5) 專欄鏈接 [link](http://t.csdn.cn/xF0H3)下面進行專欄介紹 開始嘍行高:設置多行文本的間距屬性名屬性值行高的測量方法 行高-垂直居中技巧 字體族屬性名屬性值示例擴展 font 復合屬性使用場景復合屬性示例注意 文本縮進屬性…

阿里云國際站對象儲存OSS的常見問題?

1.什么是阿里云OSS? 阿里云對象存儲服務OSS(Object Storage Service),是阿里云提供的海量、安全、低成本、高持久性的云存儲服務,并可無限擴展。其數據設計持久性不低于99.9999999999%(12個9)&a…