《最新出爐》系列初窺篇-Python+Playwright自動化測試-2-playwright的API及其他知識

2023-05-31 15:02:17

1.簡介

上一篇宏哥已經將Python+Playwright的環境搭建好了,而且也簡單的演示了一下三款瀏覽器的啟動和關閉,是不是很簡單啊。今天主要是把一篇的中的程式碼進行一次詳細的註釋,然後說一下playwright的API和其他相關知識點。那麼首先將上一篇中的程式碼進行一下詳細的解釋。

2.程式碼解釋

2.1建立瀏覽器物件

 '''預設為無頭瀏覽器方式啟動  '''
browser = p.webkit.launch(headless=False)

2.2建立page物件

一般來說,一個page對應一個瀏覽器索引標籤,而Page物件的作用在於和頁面的內容進行互動,以及導航和載入新的頁面。這點和selenium有點像,也可以說是比selenium劃分的更加細緻精確。

page = browser.new_page()

2.3其他

其他的是一些選擇器和操作方法,在後續的文章中宏哥都會一一的介紹到。

3.playwright的API

Playwright支援同步和非同步兩種API,使用非同步API需要匯入asyncio庫,它是一個可以用來實現Python協程的庫,更詳細介紹可參考Python協程 。我們可以根據自己的偏好選擇適合的模式。

3.1同步與非同步模式原理

同步操作方式:在程式碼執行時,程式會阻塞等待每個操作執行的結果,直到該操作執行結束才能繼續執行後面的程式碼。同步程式碼容易理解和編寫,但如果在網路請求等 I/O 操作時會造成大量的等待時間,影響程式的執行效率。

非同步操作方式:在程式碼執行時,當遇到需要等待操作執行的時候,程式不會被阻塞,而是繼續執行其他的程式碼。當該操作執行的結果返回時,程式會自動跳回去接著執行之前被暫停的程式碼。非同步操作雖然需要一定的學習成本,但可以提升程式的執行效率。

3.1.1同步模式

· 直接順序執行測試邏輯,直到完成。

· 使用上下文管理器或啟動/關閉方法控制瀏覽器生命週期。

· 簡單易用,適合同步測試場景。

· 但無法實現非同步或重疊的測試邏輯。

3.1.2非同步模式

· 利用asyncio模組以非同步非阻塞方式執行測試邏輯。

· 瀏覽器啟動/關閉和大多數Playwright API也是非同步的,需要await。

· 可以實現複雜的非同步或重疊測試邏輯。

· 但較難偵錯,有一定學習成本。

3.2同步和非同步的概念

同步:傳送一個請求,等待返回,然後再傳送下一個請求。

非同步:傳送一個請求,不等待返回,隨時可以再傳送下一個請求。

3.3同步和非同步實踐

3.3.1測試用例

宏哥這裡假設一共有2條測試用例,用例1步驟如下:
1)chrome瀏覽器開啟百度
2)搜尋方塊輸入「test」
3)點選百度一下搜尋
4)點選搜尋結果的第2頁
用例2步驟:
1)chrome瀏覽器開啟搜狗搜尋
2)搜尋方塊輸入「test」
3)點選搜狗搜尋
4)點選搜尋結果的第2頁

3.3.2同步

這裡我們使用sync_playwright上下文管理器同步啟動Playwright,然後編寫同步測試邏輯。

3.3.2.1參考程式碼

根據上述測試用例編寫自動化測試指令碼程式碼如下:

# coding=utf-8