
前言
最近有不少同學問到 Playwright 和 Selenium 的區別是什么?
有同學可能之前學過 selenium 了,再學一個 playwright 感覺有些多余,可能之前有專案已經是 selenium 寫的了,換成 playwright 需要時間成本,并且可能有未知風險,
也有同學之前可能沒學過 selenium ,現在正準備入手一個web 自動化框架,但是對于選擇selenium 和 playwright 猶豫不決,因為面試問selenium比較多,可能學了作業中也用不上,僅僅只是應付面試,
不管出于哪種原因,本篇詳細分析 2 者的差異
Playwright 和 Selenium 的區別
| 編號 | 功能 | Playwright | Selenium | 哪個更優秀 |
|---|---|---|---|---|
| 1 | 學習資料 | 相對少 | 多 | Selenium |
| 2 | 用戶群體 | 出現的比較晚,用戶量相對少 | 出現的早,用戶量多 | Selenium |
| 3 | 支持語言 | TypeScript、JavaScript、Python、.NET、Java | C#,Java,Perl,PHP,Python 和Ruby | Selenium |
| 4 | 支持瀏覽器 | Chromium(包含chrome, msedge)、WebKit 和 Firefox | IE(7, 8, 9, 10, 11),Firefox,Safari,Google Chrome,Opera,Edge等 | Selenium |
| 5 | 跨平臺 | Windows,Linux(只支持Ubuntu部分系統) ,Mac | Windows,Linux,Mac 都支持 | Selenium |
| 6 | 瀏覽器安裝 | 命令列安裝 | 自己安裝 | Playwright |
| 7 | 瀏覽器驅動 | 不需要驅動 | 下載對應版本驅動 | Playwright |
| 8 | 啟動速度 | 快 | 慢 | Playwright |
| 9 | context 環境隔離 | 有 | 無 | Playwright |
| 10 | headless 無頭模式 | 默認headless, 也可以設定GUI | 默認GUI模式,也可以設定headless | Playwright |
| 11 | 無痕模式 | 默認無痕模式,對應測驗很有幫助,對于爬蟲用戶可能訪問頁面不通過 | 默認非無痕默認,爬蟲用戶特別喜歡 | Selenium |
| 12 | 頁面等待 | wait_for_load_state可以精準等待commit,domcontentloaded,load,networkidle四種狀態 | implicitly_wait等待頁面加載完成 | Playwright |
| 13 | 元素定位 | 提供多個內置定位器,定位方式更貼近業務,定位方式更多 | 八大定位 | Playwright |
| 14 | 元素等待 | 定位元素自帶等待機制 | 需要自己封裝等待方法 | Playwright |
| 15 | 點擊元素等操作 | 會判斷元素狀態,出現位置,是否可點擊智能判斷 | 需要自己封裝webdriverwait.until方法,難度較大 | Playwright |
| 16 | 定位報錯 | 會人性化告訴你定位到幾個元素,并推薦定位方式 | 報錯需要自己去猜謎,自己排除各種可能性 | Playwright |
| 17 | 元素不在當前螢屏 | 會判斷元素位置,自動滾動元素出現位置 | 需要自己去判斷滾動 | Playwright |
| 18 | iframe | 通過物件操作,不用切換 | 需要來回切換 | Playwright |
| 19 | alert | 默認監聽自動關閉,可以異步監聽 | 需要自己判斷,無異步監聽 | Playwright |
| 20 | 檔案上傳 | 監聽檔案上傳時間,處理優雅 | 無法解決非input 上傳 | Playwright |
| 21 | 檔案下載 | 可以監聽下載 | 只能設定瀏覽器默認位置 | Playwright |
| 22 | 多視窗標簽 | 可以監聽視窗事件,操作方便 | 需要來回切換 | Playwright |
| 23 | 事件監聽 | 可以監聽各種事件 | 無法監聽 | Playwright |
| 24 | 捕獲ajax 請求 | 可以捕獲ajax 請求和 回傳 | 無法捕獲 | Playwright |
| 25 | mock 功能 | 可以模擬想要的任何介面資料 | 無mock 功能 | Playwright |
| 26 | 斷言 | 提供expect 豐富斷言 | 需要自己封裝webdriverwait.until方法,難度較大 | Playwright |
| 27 | 錄制視頻 | 錄制用例視頻 | 無 | Playwright |
| 28 | trace 追蹤 | 有 | 無 | Playwright |
| 29 | 斷點除錯 | 有 | 無 | Playwright |
| 30 | 錄制 | 可以生成pytest用例 | 錄制功能比較簡單 | Playwright |
| 31 | 滑鼠鍵盤操作 | 呼叫簡單方便 | 匯入模塊,操作復雜 | Playwright |
| 32 | base_url | 可以添加全域base_url | 無此功能 | Playwright |
| 33 | 介面測驗 | 提供介面測驗 | 無此功能 | Playwright |
| 34 | grid 分布式 | 無 | selenium-grid 分布式 | Selenium |
| 35 | 協議 | websockt 協議,可以實時獲取頁面狀態 | http 協議,只能獲取當時的狀態,需自己輪詢判斷 | Playwright |
| 36 | 執行JavaScript | 可以在page,iframe,元素物件執行JavaScript | 只能在driver物件執行JavaScrip | Playwright |
| 37 | 面試 | 要求playwright 比較少 | 問selenium 比較多 | Selenium |
| 38 | 學習難易程度 | 容易,無需封裝,直接用 | 難度較大,需要封裝 | Playwright |
總體打分Selenium 8分, Playwright 30 分,如果你是新手,毫不猶豫應該直接學playwright
作者|上海悠悠
本文來自博客園,作者:古道輕風,轉載請注明原文鏈接:https://www.cnblogs.com/88223100/p/What-is-the-difference-between-Playwright-and-Selenium.html
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/554890.html
標籤:其他
上一篇:Playwright 和 Selenium 的區別是什么?
下一篇:返回列表
