一說到自動化測試,第一個反應估計就是Python+selenium這樣的一個組合,其實在2020年的時候市面上就出現了另一個由微軟發布的一款UI自動化測試工具,叫Playwright。經過幾年的迭代和技術的沉淀,該工具受到越來越多的人重視和青睞。
 
Best of JS 網站曾經做過一個關于各個測試框架在 GitHub 新增的 star 數量的統計Playwright位于榜首位置,其受歡迎的程度可見一斑。松勤軟件測試今天就來和大家聊聊。
 

 
Playwright憑借自身的優勢和近幾年的迭代,在自動化測試領域開始嶄露頭角,使用場景也越來越多。
 

 
肯定有人好奇Playwright和selenium區別:
 
 
Playwright架構
 
 

 

 
client:在客戶端是我們用不同的編程語言編寫的代碼,如JavaScript,Java,Python,C#等。
 
server:Playwright的server通過nodejs構建并負責與client 以及不同的 Web 瀏覽器引擎進行通信。
 
通信協議:client通過WebSocket 協議與Playwright server 通信;
 
Playwright使用 Chrome DevTools 協議(CDP)與 Chromium 通信。對于Firefox和WebKit,Playwright 實現了自己的協議,類似于CDP。一旦觸發測試,client端代碼將被轉換為JSON格式,然后使用websocket協議發送到服務器。
 
Playwright通過單個 websocket 協議連接傳達所有請求,該連接將保持不變,直到所有測試執行完成。由于命令是在單個連接上發送的,因此測試失敗或不穩定的可能性較小,并且命令可以快速執行。這種架構與Selenium相反,Selenium使用HTTP連接協議,并將每個命令(如瀏覽器打開,單擊,發送密鑰或關閉瀏覽器)作為單獨的HTTP請求發送。
 
此外,在Selenium中,服務器和客戶端之間的連接將在每次請求后終止,并為下一個請求重新建立。最后劃重點:這就是Playwright比selenium快的原因!
 
 
Selenium架構
 

 

 
藍色圖中的Selenium Language Binding就是我們平時使用的編碼語言,包括java、python等等。可以看到這些語言并沒有直接與Browser Drivers進行通信,而是通過了JSON WireProtocol,這就是webdriver協議,然后通過webdriver協議在與各個瀏覽器的driver進行通信,最后各個瀏覽器的driver與其對應的瀏覽器進行通信。
 
這里我們以chromedriver為例進行講解,他負責與chrome瀏覽器進行通信。我們在代碼中直接 newChromeDriver() 將會啟動一個 ChromeDriver進程,ChromeDriver是一個獨立的服務,它是google為網站開發人員提供的自動化測試接口,是 selenium 和chrome瀏覽器進行通信的橋梁。
 
chromeDriver解析webdriver協議,然后根據解析結果,調用與之對應的Chrome DevTool Protocol(CDP)協議來操控chrome瀏覽器,它可以和瀏覽器內核進行交互進而操控瀏覽器,這里就不對該協議進行詳細介紹了。
 
另外,其他瀏覽器的dirver與其對應瀏覽器的通信原理與ChromeDriver類似
總的來說: Playwright啟動速度比較快,擁有更多的定位方式,不需要安裝驅動,能夠在多個平臺上運行,提供錄制功能實現錄制用例視屏,學習上來說Playwright也比較容易,無需封裝直接使用.
 
那么這么強大的工具,我們松勤課程當然不能少啦,在即將升級的自動化測試課程里面就覆蓋這個工具的使用,具體大綱如下:
 

 
上方這些內容只是我們自動化測試課程升級的一部分哦~~~
 

 
8大企業項目實戰(可寫簡歷)+10大專業技術(對標市場需求)+13項課程特色……升級內容很多,想了解更多可以聯系我們,獲取最新的課程大綱哦~~~