Selenium 面試問題
作者 Aaron Cao · 更新於

Selenium 面試聚焦等待、定位器、Page Object Model,以及測試為何會變得不穩定。你需要能講清隱式與顯式等待的差異,說明為什麼選 CSS 而不是 XPath 並為這個選擇辯護,解決過期元素錯誤,還要描述你的框架如何並行執行測試。
面試官在等待和定位器上會問什麼?
你寫的測試在本機能通過,到了流水線裡卻失敗,你懷疑答案和等待有關,卻說不清楚。面試官很清楚這一點,所以等待幾乎是每場 Selenium 面試的開場話題。這一節講清楚一個完整的答案該是什麼樣子。
- 隱式等待與顯式等待。 隱式等待是一個全域設定,每次尋找元素時都會輪詢等待其出現。顯式等待只針對一個元素和一個條件,例如可點擊或可見。顯式等待更受青睞,因為它明確說明了你在等什麼。
- 為什麼不該混用兩者? 同時使用兩者可能會以難以預測的方式疊加逾時時間,所以大多數團隊會把隱式等待設為零,全程只用顯式等待。
- 什麼是 fluent wait? 一種可以設定輪詢間隔並忽略特定例外型別的顯式等待。
- 為什麼
Thread.sleep是錯的? 它是無條件的。它會拖慢一個本該通過的測試,卻仍然救不了一個本就很慢的測試。 - 該用 CSS 選擇器還是 XPath? 優先使用穩定的測試專用識別屬性,其次是可讀性更好的 CSS。只有當你需要向上遍歷到父節點或依文字比對時,XPath 才有用武之地。
- 什麼會讓定位器變得脆弱? 自動產生的類別名稱、絕對路徑的 XPath,以及依索引選取。說出你會請開發者額外加什麼來取代這些。
面試官在聽的是每個選擇背後的理由。只說出偏好而不說明代價,聽起來就像是背出來的答案。
異常和測試不穩定相關的問題該怎麼回答?
測試不穩定才是大多數資深自動化面試真正在考察的主題,因為一個沒人信任的測試套件比沒有測試套件還糟糕。
- 什麼會導致
StaleElementReferenceException? 元素參照指向的節點已經不再掛載在頁面上,通常是因為框架重新渲染了頁面的那一部分。應該重新尋找元素,而不是複用已儲存的參照。 ElementNotInteractableException又是怎麼回事? 元素存在,但無法被操作:被隱藏、被停用、被遮擋,或是在畫面之外。- 如何處理
NoSuchElementException? 要區分是時機問題還是元素確實不存在,不要靠拉長等待時間來掩蓋問題。 - 為什麼測試只在流水線裡失敗? 視窗大小不同、環境更慢、缺少測試資料、動畫完成得更晚,以及並行測試互相搶奪共享狀態。
- 如何修復一個不穩定的測試? 先診斷出問題類別,再修復根本原因。自動重試只是掩蓋失敗,該被當作萬不得已的手段來看待。
- 如何處理 frame、新視窗和快顯訊息? 明確地切換情境,之後再切換回來。
一位應徵中階自動化職缺的 QA 工程師曾被問到:為什麼某個測試套件在程式碼沒有任何改動的情況下,每週都會失敗兩次。真正打動面試官的答案不是某個 Selenium API 細節,而是這些測試共用了同一個預先建立的帳號,彼此互相競爭。面試官看重的正是這種診斷順序:先看環境和資料,再看 API。
更多依職缺和工具劃分的題庫,見 依職缺劃分的面試問題。
框架和架構方面會問到哪些問題?
除了 API 本身,面試官還想知道你是否能獨立負責一個測試套件。這些問題對資深職缺的分量最重。
- 解釋一下 Page Object Model。 Page 類別負責公開操作方法並隱藏定位器,這樣介面變動時只需要改一個檔案。要說清楚它解決了什麼問題;只描述資料夾結構是抓不到重點的。
- Page Object 會出什麼問題? 它們會膨脹成上千行的類別,並開始在頁面方法內部做斷言。斷言應該放在測試裡。
- 你的框架如何並行執行測試? 執行緒安全的驅動程式管理,確保實例不會被多個執行緒共用,再加上每個測試獨立的測試資料。
- Selenium Grid 是用來做什麼的? 把測試分散到不同機器和瀏覽器版本上執行,架構是一個 hub 加多個 node,或是由雲端服務商扮演同樣的角色。
- Selenium 4 有哪些變化? W3C WebDriver 協定成為標準,舊的 JSON wire protocol 被移除,新增了相對定位器,並且開放了 Chrome DevTools Protocol 的存取能力。
- 什麼情況下不該用 Selenium? API 層級的檢查、可以做單元測試的邏輯,以及瀏覽器之外的一切。知道這個邊界在哪,本身就是資深的信號。
- 你怎麼決定要自動化哪些內容? 穩定、高價值、重複執行的路徑。不是所有東西都要自動化,也不該是一個還在重新設計中的畫面。
面試前該怎麼練習?
Selenium 的答案往往是那種知道卻很難說清楚的類型。等待這個問題尤其如此,一個完整的回答需要兩部分:定義加原因,而只讀過資料的候選人往往只說出前半部分就接不下去了。
挑出這裡面你最不想面對的五個問題,不打開任何編輯器,大聲在九十秒內把每個都答一遍。然後請別人追問一句「為什麼」,這個追問幾乎每次都會出現。對著一個會反問追問的 AI 面試官反覆練習這些問題,比重新讀一遍清單更接近真實的面試,這也正是 模擬面試 模式存在的原因。
SubcueAI 創辦人 Aaron Cao 把練習的重點放在了「能不能說出來」這個落差上,而不是放在提供更多題目上。在真實面試中,桌面應用程式和瀏覽器擴充功能的側邊欄可以在面試官說話的同時呈現結構,這對你已經練習過的內容幫助最大。這個產品能做什麼、以及它絕不會跨越的界線,都寫在 安全性 頁面上。