Dalam dunia automated testing, hal paling mendasar adalah kemampuan untuk menemukan dan berinteraksi dengan elemen UI. Elemen ini bisa berupa tombol, input, checkbox, ataupun label. Untuk bisa melakukan aksi otomatisasi, kita perlu locator — sebuah cara untuk menunjukkan “di mana” elemen tersebut berada di halaman, aplikasi mobile, maupun aplikasi desktop.
Artikel ini membahas konsep dasar Select Element / Locator yang bersifat universal, dapat digunakan lintas bahasa dan tools — seperti Selenium, Cypress, Playwright, Appium (untuk mobile), hingga WinAppDriver atau Winium (untuk desktop).
Apa itu Locator?
Locator adalah instruksi atau aturan untuk menemukan elemen dalam struktur antarmuka (HTML di web, XML di mobile, UI tree di desktop). Tanpa locator, automation tool tidak tahu elemen mana yang ingin diuji.
Locator = “petunjuk arah” untuk robot testing agar bisa menemukan dan berinteraksi dengan elemen UI.
Tujuan Penggunaan Locator
- Menemukan elemen yang ingin diuji/interaksi
- Melakukan aksi seperti klik, input teks, scroll
- Melakukan verifikasi/assertion terhadap state elemen
Jenis Locator (Web, Mobile, Desktop)
Web App (HTML-based)
Jenis Locator | Contoh | Keterangan |
---|---|---|
By ID | #submit-button | Unik, cepat – disarankan |
By Class | .form-group | Umum, tapi bisa ambigu |
By Name | [name="email"] | Sering muncul di form |
By Text | text="Submit" | Cocok untuk tombol/link |
By CSS Selector | div > input[type="text"] | Fleksibel dan powerful |
By XPath | //button[@type='submit'] | Ekspresif dan kuat, bisa lintas level DOM |
By Custom Attribute | [data-testid="login-btn"] | Stabil, ideal untuk testing |
Mobile App (Android & iOS via Appium)
Locator Appium | Contoh | Digunakan Untuk |
---|---|---|
Accessibility ID | "loginButton" | Sangat direkomendasikan |
Resource ID (Android) | "com.app:id/username" | Berdasarkan ID elemen Android native |
XPath | //android.widget.TextView[@text="Login"] | Alternatif fleksibel, tapi lebih lambat |
Class Name | "android.widget.EditText" | Bisa digunakan, tapi rentan ambigu |
iOS Predicate/String | name == 'Login' | Untuk elemen iOS |
⚠️ Gunakan
accessibilityLabel
ataucontent-desc
(di Android) untuk stabilitas dan aksesibilitas lebih baik.
Desktop App (Windows App via WinAppDriver/Winium)
Jenis Locator | Contoh | Keterangan |
---|---|---|
Automation ID | "SubmitBtn" | Sangat disarankan (setara ID di web) |
Name | "Submit" | Nama visual elemen |
ClassName | "Button" | Kelas kontrol UI |
XPath | //Button[@Name='Submit'] | Berguna jika tidak ada Automation ID |
Control Type | "Edit" , "Button" | Umum dalam struktur UI Windows |
Penjelasan Tambahan tentang XPath
XPath (XML Path Language) adalah cara powerful untuk menavigasi elemen dalam DOM atau struktur UI.
Contoh Umum XPath:
//input[@type='text']
– cari semua input text//button[text()='Login']
– cari tombol dengan teks “Login”//div[@id='main']//a
– cari anchor di dalam#main
//*[contains(@class, 'btn-primary')]
– cari elemen dengan class mengandung kata tersebut
Kelebihan:
✅ Bisa mencari berdasarkan atribut, posisi, struktur hirarki
✅ Cocok saat tidak ada ID/nama yang stabil
Kekurangan:
❌ XPath cenderung lebih lambat
❌ XPath bisa rapuh jika struktur DOM berubah
❌ XPath terlalu panjang membuat maintenance lebih sulit
Best Practice:
- Gunakan XPath hanya jika tidak ada alternatif locator yang stabil
- Hindari path berdasarkan posisi (seperti
//div[3]/ul/li[1]
) jika memungkinkan
Best Practice Umum dalam Memilih Locator
- Stabilitas > Singkat
Gunakan locator yang tidak berubah walau UI berubah (misaldata-testid
,automationId
,accessibilityId
). - Readable dan Maintainable
Hindari locator yang terlalu panjang atau kompleks. - Gunakan Abstraksi
Buat fungsi/helper atau gunakan Page Object Model (POM) untuk menyimpan locator. - Cek Unik dan Eksistensi
Pastikan locator hanya menemukan satu elemen agar interaksi tidak ambigu.
Kesimpulan
Selector / Locator adalah fondasi dari automated testing — entah itu di web, mobile, atau desktop. Dengan memahami berbagai jenis locator dan prinsip penggunaannya, kita bisa membangun automated test yang kuat, stabil, dan maintainable.
Kuasai dasar ini, dan kamu sudah menyelesaikan bagian tersulit dari pengujian otomatisasi antarmuka.
Mau saya bantu buat strukturnya?