在 Web 開發與自動化測試中,document.getElementById() 與元素的 name 屬性是定位元素的兩大核心手段。本文從 Selenium IDE 錄製腳本切入,深入探討 HTML 表單中 Name 與 ID 的異同、用途與最佳實踐。
觀察 Selenium 錄製的 Google 搜尋腳本:
selenium.Type("q", "Selenium 介紹");
selenium.Click("btnG");
這裡的 "q" 與 "btnG" 分別對應搜尋輸入框與按鈕的 name 屬性。檢視頁面原始碼可見:
<input title="Google 搜尋" maxLength="2048" size="55" name="q" autocomplete="off" />
<input title="Google Search" maxLength="2048" size="55" name="btnG" autocomplete="off" />
Google 採用 name 而非 id 進行元素定位,對應 JavaScript 的 document.getElementsByName()。
| 特性 | Name | ID |
|---|---|---|
| 用途 | 表單控件名稱,表單提交時依 name 傳遞資料;Checkbox、Radio 等同名分組;指定 frame/window target | 文件中唯一識別碼,供 CSS、JavaScript (getElementById) 精準選取 |
| 唯一性 | 可重複(如 Radio 群組) | 全文件必須唯一,ASP.NET 編譯時會檢查並拋出異常 |
| 伺服器端接收 | Request 參數以 name 為鍵 | 若無 name,伺服器無法接收表單資料 |
| 適用標籤 | 主要用於表單元素 | HTML 4.0 規範除 BASE, HEAD, HTML, META, SCRIPT, STYLE, TITLE 外皆可使用 |