參考:https://www.testim.io/blog/puppeteer-selenium-playwright-cypress-how-to-choose/
這四款自動化測試框架在我們的公眾號都有介紹。上周介紹了新出 Playwright,那這款工具有什么優(yōu)點,是否值得我們投入精力學(xué)習(xí)。
關(guān)鍵對比
接下來,我會通過一些維度來進(jìn)行對比。
支持語言
- Playwright: ???? 支持主流語言:JavaScript & TypeScript\python\C#\Go\Java
- Selenium: ????? 支持主流語言:java\python\ruby\C#\C++\JavaScript
- Cypress: ? 只支持 JavaScript & TypeScript
- Puppeteer: ?? 只支持 JavaScript & TypeScript \ python
覆蓋瀏覽器
- Playwright: ??? 支持Chromium/WebKit/Firefox
- Selenium: ????? 運行在目前所有主流瀏覽器上(不包括國內(nèi)套皮的瀏覽器)。
- Cypress: ?? 只支持 Chrome/Firefox
- Puppeteer: ?? 只支持 Chrome/Firefox
支持多標(biāo)簽 + 表單
- Selenium: ??? 通過
switch_to
切換,但不好用。
- Cypress: ? 沒有真正支持
- Puppeteer: ????? 更符合直覺的 API
- Playwright: ????? 更符合直覺的 API
為證明playwright 更簡單,我們來做個代碼對比。
測試創(chuàng)建速度
- Selenium: ? Yes Selenium IDE可以錄制腳本。
- Cypress: ? 不支持腳本錄制。
- Puppeteer: ?? Yes 基于Puppeteer Recorder錄制腳本。
- Playwright: ?? Yes 基于
playwright codegen
命令錄制腳本。
并行網(wǎng)格和基礎(chǔ)服務(wù)
- Selenium: ? Yes 托管或構(gòu)建自己解決方案。
- Cypress: ?? 只能在自己的閉源付費云構(gòu)建。
- Puppeteer: ? 通常構(gòu)建自己的
- Playwright: ? 通常構(gòu)建自己的。
穩(wěn)定性
這個主要評估用例編寫之后的失敗率,不包含真的發(fā)現(xiàn)bug之后的失敗。
Selenium: ?? 復(fù)雜的自動等待機(jī)制。
Cypress: ?? 復(fù)雜的機(jī)制,并且不能與框架一起工作。
Puppeteer:?? 等待某些元素,但必須手工等待其他元素。
Playwright: ??? 最好等待某些元素,但必須手工等待其他元素。
智能定位:
Selenium: ? 不支持以多種方式選擇元素
Cypress: ? 不支持以多種方式選擇元素
Puppeteer? 不支持以多種方式選擇元素
Playwright: ??? 非常前景,開始支持自定義選擇器引擎。
Debugging
- Selenium: ?? 遠(yuǎn)程教程網(wǎng)格依賴于網(wǎng)格提供的程序。
- Cypress: ?? 你甚至不是在寫常規(guī)的JavaScript。
- Puppeteer: ? 在IDE中編寫和調(diào)試Javascript。
- Playwright: ? 在IDE中編寫和調(diào)試Javascript或其他語言。
Documentation and Resources
- Selenium: ?? 官方文檔寫得確實不好,但是第三方資料太豐富,相關(guān)的書籍也很多。
- Cypress: ?? 雖然社區(qū)很小,但是很熱鬧,官方文檔也寫的非常贊。
- Puppeteer: ? 社區(qū)比較小,但目前有大量的教程。
- Playwright: ?? 工具比較新,API也在變化,文檔和教程可能跟不上。
注:要分范圍 1 ~ 5,代表分值,分值越高說明越優(yōu)。
categories |
Playwright |
Selenium |
Cypress |
Puppeteer |
支持語言 |
4 |
5 |
1 |
2 |
覆蓋瀏覽器 |
3 |
5 |
2 |
2 |
多標(biāo)簽&表單 |
5 |
3 |
0 |
5 |
測試編寫速度 |
4 |
4 |
4 |
3 |
并行,網(wǎng)格 |
0 |
4 |
2 |
0 |
穩(wěn)定性 |
4 |
3 |
3 |
3 |
智能定位 |
3 |
2 |
2 |
2 |
Debugging |
3 |
2 |
3 |
2 |
文檔和資源 |
3 |
4 |
4 |
3 |
如何選擇?
首先,這些測試工具都是基礎(chǔ)。他們只是提供了一套API來定位和操作元素。并不能成為你自動化項目成功或失敗的決定因素。
自動化的是否成功我認(rèn)為主要取決于以下幾個方面:
- 調(diào)研你的項目是否真的適合自動化。
- 是否真的找到自動化的應(yīng)用場景。(比如,我們用自動化測試埋點,用自動化配合檢查App性能都是很好應(yīng)用場景)
- 是否有足夠人力投入到自動化中。
- 測試人員的水平,不要懷疑這一點,不少同學(xué)還在定位元素面前磕磕絆絆。
- 是否有團(tuán)隊支持和配合。有些同學(xué)還在糾結(jié)驗證的問題,讓開發(fā)配合一些很輕松可繞過,可你就是做不到。
好了,這些工具都無法決定自動化項目是否成功,那怎么選?
如果,你不懂并且也不打算學(xué)習(xí)JavaScript, 那么就不用選 Cypress 和 Puppeteer 了。
如果,你只是一個新手,那么還是穩(wěn)妥點,先學(xué)會Selenium,這是測試的必備技能。
我非常鼓勵那些有一些自動化經(jīng)驗的同學(xué)嘗試學(xué)習(xí)JavaScript,他會讓你對前端(web)技術(shù)有更深的理解,因為你要測試的就是前端(web)應(yīng)用。就像我可靈活的控制元素的隱藏,修改屬性,更快速的定位到疑難雜癥的元素,這完全是因為我做過前端開發(fā)。Cypress 或 Puppeteer 就是很好的選擇。
當(dāng)然,對于我來說,新出的自動化工具,我都會關(guān)注和學(xué)習(xí)一下。從而找到它的亮點和優(yōu)勢分享給你們。
本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請
點擊舉報。