WEBDRIVER DOCS
WEBDRIVER-INTRODUCTION
Name
Description
Example
Output
WebDriver ProtocolDescription: Protokol standar W3C untuk mengotomatisasi browser secara remote melalui HTTP.
Example:
POST /session { capabilities: { alwaysMatch: { browserName: 'chrome' } } }Output: Session ID
WebDriver ProtocolProtokol standar W3C untuk mengotomatisasi browser secara remote melalui HTTP.
POST /session { capabilities: { alwaysMatch: { browserName: 'chrome' } } }Session ID
WebDriver vs SeleniumDescription: WebDriver adalah standar W3C; Selenium adalah implementasi populer yang mendukung banyak bahasa (Java, Python, JS).
Example:
const { Builder } = require('selenium-webdriver');
const driver = new Builder().forBrowser('chrome').build();Output: Driver instance
WebDriver vs SeleniumWebDriver adalah standar W3C; Selenium adalah implementasi populer yang mendukung banyak bahasa (Java, Python, JS).
const { Builder } = require('selenium-webdriver');
const driver = new Builder().forBrowser('chrome').build();Driver instance
SETUP
Name
Description
Example
Output
ChromeDriver / GeckoDriverDescription: Driver spesifik browser yang menjembatani WebDriver dengan browser. ChromeDriver untuk Chrome, GeckoDriver untuk Firefox.
Example:
npm install chromedriver
Output: Driver binary tersedia
ChromeDriver / GeckoDriverDriver spesifik browser yang menjembatani WebDriver dengan browser. ChromeDriver untuk Chrome, GeckoDriver untuk Firefox.
npm install chromedriver
Driver binary tersedia
Selenium WebDriver (JS)Description: Klien JavaScript untuk WebDriver.
Example:
const webdriver = require('selenium-webdriver');
const driver = new webdriver.Builder().forBrowser('chrome').build();Output: Driver siap
Selenium WebDriver (JS)Klien JavaScript untuk WebDriver.
const webdriver = require('selenium-webdriver');
const driver = new webdriver.Builder().forBrowser('chrome').build();Driver siap
WebDriverIODescription: Framework test automation populer berbasis WebDriver dengan sintaks deklaratif.
Example:
const { remote } = require('webdriverio');
const browser = await remote({ capabilities: { browserName: 'chrome' } });Output: Browser instance
WebDriverIOFramework test automation populer berbasis WebDriver dengan sintaks deklaratif.
const { remote } = require('webdriverio');
const browser = await remote({ capabilities: { browserName: 'chrome' } });Browser instance
Playwright vs SeleniumDescription: Playwright menggunakan protokol DevTools, bukan WebDriver, tetapi memiliki API serupa untuk testing cross-browser.
Example:
const { chromium } = require('playwright');
const browser = await chromium.launch();Output: Browser Playwright
Playwright vs SeleniumPlaywright menggunakan protokol DevTools, bukan WebDriver, tetapi memiliki API serupa untuk testing cross-browser.
const { chromium } = require('playwright');
const browser = await chromium.launch();Browser Playwright
SESSION-MANAGEMENT
Name
Description
Example
Output
New SessionDescription: Membuat sesi baru dengan browser tertentu.
Example:
const session = await driver.getSession();
Output: { id: 'abc123...', capabilities: {...} }
New SessionMembuat sesi baru dengan browser tertentu.
const session = await driver.getSession();
{ id: 'abc123...', capabilities: {...} }
Delete SessionDescription: Menutup browser dan mengakhiri sesi.
Example:
await driver.quit();
Output: Browser tertutup
Delete SessionMenutup browser dan mengakhiri sesi.
await driver.quit();
Browser tertutup
CapabilitiesDescription: Konfigurasi browser (nama, versi, platform, headless, argumen).
Example:
capabilities: { browserName: 'chrome', 'goog:chromeOptions': { args: ['--headless'] } }Output: Chrome headless
CapabilitiesKonfigurasi browser (nama, versi, platform, headless, argumen).
capabilities: { browserName: 'chrome', 'goog:chromeOptions': { args: ['--headless'] } }Chrome headless
NAVIGATION
Name
Description
Example
Output
Navigate To URLDescription: Membuka URL tertentu di browser.
Example:
await driver.get('https://example.com');Output: Halaman dimuat
Navigate To URLMembuka URL tertentu di browser.
await driver.get('https://example.com');Halaman dimuat
Back / ForwardDescription: Navigasi history.
Example:
await driver.navigate().back(); await driver.navigate().forward();
Output: Pindah history
Back / ForwardNavigasi history.
await driver.navigate().back(); await driver.navigate().forward();
Pindah history
RefreshDescription: Memuat ulang halaman.
Example:
await driver.navigate().refresh();
Output: Halaman direfresh
RefreshMemuat ulang halaman.
await driver.navigate().refresh();
Halaman direfresh
Get Current URLDescription: Mendapatkan URL halaman saat ini.
Example:
const url = await driver.getCurrentUrl();
Output: 'https://example.com'
Get Current URLMendapatkan URL halaman saat ini.
const url = await driver.getCurrentUrl();
'https://example.com'
Get TitleDescription: Mendapatkan judul halaman.
Example:
const title = await driver.getTitle();
Output: 'Example Domain'
Get TitleMendapatkan judul halaman.
const title = await driver.getTitle();
'Example Domain'
ELEMENT-RETRIEVAL
Name
Description
Example
Output
Find ElementDescription: Mencari elemen pertama yang cocok dengan strategi locator.
Example:
const el = await driver.findElement(By.id('myId'));Output: WebElement
Find ElementMencari elemen pertama yang cocok dengan strategi locator.
const el = await driver.findElement(By.id('myId'));WebElement
Find ElementsDescription: Mencari semua elemen yang cocok.
Example:
const els = await driver.findElements(By.css('.item'));Output: [WebElement, WebElement]
Find ElementsMencari semua elemen yang cocok.
const els = await driver.findElements(By.css('.item'));[WebElement, WebElement]
Locator StrategiesDescription: Cara menemukan elemen: By.id, By.css, By.xpath, By.name, By.className, By.linkText, By.partialLinkText, By.tagName.
Example:
By.id('username'), By.css('input[type="email"]'), By.xpath('//button[text()="Submit"]')Output: Locator
Locator StrategiesCara menemukan elemen: By.id, By.css, By.xpath, By.name, By.className, By.linkText, By.partialLinkText, By.tagName.
By.id('username'), By.css('input[type="email"]'), By.xpath('//button[text()="Submit"]')Locator
Relative Locators (Selenium 4)Description: Mencari elemen relatif terhadap elemen lain (above, below, toLeftOf, toRightOf, near).
Example:
const password = driver.findElement(locateWith(By.tagName('input')).below(By.id('username')));Output: Input di bawah username
Relative Locators (Selenium 4)Mencari elemen relatif terhadap elemen lain (above, below, toLeftOf, toRightOf, near).
const password = driver.findElement(locateWith(By.tagName('input')).below(By.id('username')));Input di bawah username
ELEMENT-INTERACTION
Name
Description
Example
Output
ClickDescription: Mengklik elemen.
Example:
await el.click();
Output: Klik dilakukan
ClickMengklik elemen.
await el.click();
Klik dilakukan
Send KeysDescription: Mengirim input teks ke elemen (input, textarea).
Example:
await el.sendKeys('Hello World');Output: Teks diketik
Send KeysMengirim input teks ke elemen (input, textarea).
await el.sendKeys('Hello World');Teks diketik
ClearDescription: Menghapus nilai input.
Example:
await el.clear();
Output: Input kosong
ClearMenghapus nilai input.
await el.clear();
Input kosong
SubmitDescription: Mengirim form yang memuat elemen.
Example:
await el.submit();
Output: Form tersubmit
SubmitMengirim form yang memuat elemen.
await el.submit();
Form tersubmit
Select DropdownDescription: Memilih opsi dari <select> menggunakan Select helper.
Example:
const select = new Select(el);
await select.selectByVisibleText('Option 1');Output: Opsi dipilih
Select DropdownMemilih opsi dari <select> menggunakan Select helper.
const select = new Select(el);
await select.selectByVisibleText('Option 1');Opsi dipilih
ELEMENT-INFORMATION
Name
Description
Example
Output
Get TextDescription: Mendapatkan teks yang terlihat dari elemen.
Example:
const text = await el.getText();
Output: 'Hello World'
Get TextMendapatkan teks yang terlihat dari elemen.
const text = await el.getText();
'Hello World'
Get AttributeDescription: Mendapatkan nilai atribut elemen.
Example:
const href = await el.getAttribute('href');Output: 'https://example.com'
Get AttributeMendapatkan nilai atribut elemen.
const href = await el.getAttribute('href');'https://example.com'
Get CSS ValueDescription: Mendapatkan nilai properti CSS yang dihitung.
Example:
const color = await el.getCssValue('color');Output: 'rgba(0,0,0,1)'
Get CSS ValueMendapatkan nilai properti CSS yang dihitung.
const color = await el.getCssValue('color');'rgba(0,0,0,1)'
Is DisplayedDescription: Memeriksa apakah elemen terlihat.
Example:
const visible = await el.isDisplayed();
Output: true/false
Is DisplayedMemeriksa apakah elemen terlihat.
const visible = await el.isDisplayed();
true/false
Is EnabledDescription: Memeriksa apakah elemen diaktifkan (tidak disabled).
Example:
const enabled = await el.isEnabled();
Output: true/false
Is EnabledMemeriksa apakah elemen diaktifkan (tidak disabled).
const enabled = await el.isEnabled();
true/false
Is SelectedDescription: Memeriksa apakah elemen (checkbox/radio/option) dipilih.
Example:
const selected = await el.isSelected();
Output: true/false
Is SelectedMemeriksa apakah elemen (checkbox/radio/option) dipilih.
const selected = await el.isSelected();
true/false
Get Tag NameDescription: Mendapatkan nama tag elemen.
Example:
const tag = await el.getTagName();
Output: 'input'
Get Tag NameMendapatkan nama tag elemen.
const tag = await el.getTagName();
'input'
Get Size & LocationDescription: Mendapatkan dimensi dan posisi elemen.
Example:
const rect = await el.getRect();
Output: { x: 100, y: 200, width: 300, height: 50 }
Get Size & LocationMendapatkan dimensi dan posisi elemen.
const rect = await el.getRect();
{ x: 100, y: 200, width: 300, height: 50 }
COOKIES
Name
Description
Example
Output
Get All CookiesDescription: Mendapatkan semua cookie.
Example:
const cookies = await driver.manage().getCookies();
Output: [{ name, value, domain, ... }]
Get All CookiesMendapatkan semua cookie.
const cookies = await driver.manage().getCookies();
[{ name, value, domain, ... }]
Add CookieDescription: Menambahkan cookie baru.
Example:
await driver.manage().addCookie({ name: 'key', value: 'val' });Output: Cookie ditambahkan
Add CookieMenambahkan cookie baru.
await driver.manage().addCookie({ name: 'key', value: 'val' });Cookie ditambahkan
Delete CookieDescription: Menghapus cookie berdasarkan nama.
Example:
await driver.manage().deleteCookie('key');Output: Cookie dihapus
Delete CookieMenghapus cookie berdasarkan nama.
await driver.manage().deleteCookie('key');Cookie dihapus
Delete All CookiesDescription: Menghapus semua cookie.
Example:
await driver.manage().deleteAllCookies();
Output: Semua cookie dihapus
Delete All CookiesMenghapus semua cookie.
await driver.manage().deleteAllCookies();
Semua cookie dihapus
ALERTS
Name
Description
Example
Output
Accept AlertDescription: Menerima dialog alert/confirm/prompt.
Example:
await driver.switchTo().alert().accept();
Output: Alert diterima
Accept AlertMenerima dialog alert/confirm/prompt.
await driver.switchTo().alert().accept();
Alert diterima
Dismiss AlertDescription: Menolak dialog.
Example:
await driver.switchTo().alert().dismiss();
Output: Alert ditolak
Dismiss AlertMenolak dialog.
await driver.switchTo().alert().dismiss();
Alert ditolak
Get Alert TextDescription: Mendapatkan teks dialog.
Example:
const text = await driver.switchTo().alert().getText();
Output: 'Are you sure?'
Get Alert TextMendapatkan teks dialog.
const text = await driver.switchTo().alert().getText();
'Are you sure?'
Send Keys to AlertDescription: Mengirim teks ke prompt.
Example:
await driver.switchTo().alert().sendKeys('Hello');Output: Prompt terisi
Send Keys to AlertMengirim teks ke prompt.
await driver.switchTo().alert().sendKeys('Hello');Prompt terisi
SCREENSHOTS
Name
Description
Example
Output
Take ScreenshotDescription: Mengambil tangkapan layar halaman penuh atau viewport.
Example:
const screenshot = await driver.takeScreenshot();
fs.writeFileSync('screenshot.png', screenshot, 'base64');Output: File PNG
Take ScreenshotMengambil tangkapan layar halaman penuh atau viewport.
const screenshot = await driver.takeScreenshot();
fs.writeFileSync('screenshot.png', screenshot, 'base64');File PNG
Element ScreenshotDescription: Tangkapan layar hanya elemen tertentu.
Example:
const base64 = await el.takeScreenshot();
Output: Gambar elemen
Element ScreenshotTangkapan layar hanya elemen tertentu.
const base64 = await el.takeScreenshot();
Gambar elemen
WINDOW-MANAGEMENT
Name
Description
Example
Output
Get Window Size / PositionDescription: Mendapatkan ukuran dan posisi jendela.
Example:
const { width, height } = await driver.manage().window().getRect();Output: { width: 1024, height: 768, x: 0, y: 0 }
Get Window Size / PositionMendapatkan ukuran dan posisi jendela.
const { width, height } = await driver.manage().window().getRect();{ width: 1024, height: 768, x: 0, y: 0 }
Set Window SizeDescription: Mengatur ukuran jendela.
Example:
await driver.manage().window().setRect({ width: 1280, height: 720 });Output: Ukuran diubah
Set Window SizeMengatur ukuran jendela.
await driver.manage().window().setRect({ width: 1280, height: 720 });Ukuran diubah
Maximize / Minimize / FullscreenDescription: Operasi jendela umum.
Example:
await driver.manage().window().maximize(); await driver.manage().window().minimize(); await driver.manage().window().fullscreen();
Output: Jendela diubah
Maximize / Minimize / FullscreenOperasi jendela umum.
await driver.manage().window().maximize(); await driver.manage().window().minimize(); await driver.manage().window().fullscreen();
Jendela diubah
Switch Window / TabDescription: Pindah antar jendela atau tab berdasarkan handle.
Example:
const handles = await driver.getAllWindowHandles(); await driver.switchTo().window(handles[1]);
Output: Pindah tab
Switch Window / TabPindah antar jendela atau tab berdasarkan handle.
const handles = await driver.getAllWindowHandles(); await driver.switchTo().window(handles[1]);
Pindah tab
Close Window / TabDescription: Menutup jendela saat ini.
Example:
await driver.close();
Output: Tab tertutup
Close Window / TabMenutup jendela saat ini.
await driver.close();
Tab tertutup
New Window / TabDescription: Membuka jendela atau tab baru.
Example:
await driver.switchTo().newWindow('tab');
await driver.switchTo().newWindow('window');Output: Jendela/tab baru
New Window / TabMembuka jendela atau tab baru.
await driver.switchTo().newWindow('tab');
await driver.switchTo().newWindow('window');Jendela/tab baru
FRAMES
Name
Description
Example
Output
Switch to FrameDescription: Beralih ke dalam iframe berdasarkan indeks, nama/id, atau WebElement.
Example:
await driver.switchTo().frame(0);
await driver.switchTo().frame(driver.findElement(By.css('iframe')));Output: Konteks di dalam frame
Switch to FrameBeralih ke dalam iframe berdasarkan indeks, nama/id, atau WebElement.
await driver.switchTo().frame(0);
await driver.switchTo().frame(driver.findElement(By.css('iframe')));Konteks di dalam frame
Switch to Parent FrameDescription: Kembali ke konteks induk.
Example:
await driver.switchTo().parentFrame();
Output: Kembali ke parent
Switch to Parent FrameKembali ke konteks induk.
await driver.switchTo().parentFrame();
Kembali ke parent
Switch to Default ContentDescription: Kembali ke halaman utama.
Example:
await driver.switchTo().defaultContent();
Output: Konteks root
Switch to Default ContentKembali ke halaman utama.
await driver.switchTo().defaultContent();
Konteks root
ACTIONS
Name
Description
Example
Output
Actions API (W3C)Description: API untuk simulasi interaksi kompleks: keyboard, mouse, pen, touch.
Example:
const actions = driver.actions();
await actions.move({ origin: el }).click().perform();Output: Klik dilakukan
Actions API (W3C)API untuk simulasi interaksi kompleks: keyboard, mouse, pen, touch.
const actions = driver.actions();
await actions.move({ origin: el }).click().perform();Klik dilakukan
Keyboard ActionsDescription: Menekan tombol keyboard (keyDown, keyUp, sendKeys).
Example:
await actions.keyDown(Key.SHIFT).sendKeys('a').keyUp(Key.SHIFT).perform();Output: Huruf 'A' besar
Keyboard ActionsMenekan tombol keyboard (keyDown, keyUp, sendKeys).
await actions.keyDown(Key.SHIFT).sendKeys('a').keyUp(Key.SHIFT).perform();Huruf 'A' besar
Mouse ActionsDescription: Gerakan mouse: move, click, doubleClick, contextClick, dragAndDrop.
Example:
await actions.move({ origin: el1 }).press().move({ origin: el2 }).release().perform();Output: Drag and drop
Mouse ActionsGerakan mouse: move, click, doubleClick, contextClick, dragAndDrop.
await actions.move({ origin: el1 }).press().move({ origin: el2 }).release().perform();Drag and drop
Scroll to ElementDescription: Menggulir ke elemen menggunakan Actions atau JavaScript.
Example:
await driver.executeScript('arguments[0].scrollIntoView(true);', el);Output: Tergulir
Scroll to ElementMenggulir ke elemen menggunakan Actions atau JavaScript.
await driver.executeScript('arguments[0].scrollIntoView(true);', el);Tergulir
JAVASCRIPT-EXECUTION
Name
Description
Example
Output
Execute ScriptDescription: Menjalankan JavaScript sinkron di halaman.
Example:
const title = await driver.executeScript('return document.title;');Output: 'Judul Halaman'
Execute ScriptMenjalankan JavaScript sinkron di halaman.
const title = await driver.executeScript('return document.title;');'Judul Halaman'
Execute Async ScriptDescription: Menjalankan skrip asinkron dengan callback.
Example:
await driver.executeAsyncScript('var callback = arguments[arguments.length - 1]; setTimeout(callback, 1000);');Output: Menunggu 1 detik
Execute Async ScriptMenjalankan skrip asinkron dengan callback.
await driver.executeAsyncScript('var callback = arguments[arguments.length - 1]; setTimeout(callback, 1000);');Menunggu 1 detik
TIMEOUTS
Name
Description
Example
Output
Implicit WaitDescription: Waktu tunggu global untuk mencari elemen sebelum melempar error.
Example:
await driver.manage().setTimeouts({ implicit: 5000 });Output: Timeout 5 detik
Implicit WaitWaktu tunggu global untuk mencari elemen sebelum melempar error.
await driver.manage().setTimeouts({ implicit: 5000 });Timeout 5 detik
Explicit Wait (WebDriverWait)Description: Menunggu kondisi tertentu terpenuhi (misal elemen terlihat) dengan polling.
Example:
const wait = new WebDriverWait(driver, 10000);
const el = await wait.until(ExpectedConditions.elementLocated(By.id('result')));Output: Elemen ditemukan
Explicit Wait (WebDriverWait)Menunggu kondisi tertentu terpenuhi (misal elemen terlihat) dengan polling.
const wait = new WebDriverWait(driver, 10000);
const el = await wait.until(ExpectedConditions.elementLocated(By.id('result')));Elemen ditemukan
Script TimeoutDescription: Batas waktu untuk executeAsyncScript.
Example:
await driver.manage().setTimeouts({ script: 10000 });Output: Timeout 10 detik
Script TimeoutBatas waktu untuk executeAsyncScript.
await driver.manage().setTimeouts({ script: 10000 });Timeout 10 detik
ADVANCED-FEATURES
Name
Description
Example
Output
Virtual Authenticator (WebAuthn)Description: Mensimulasikan autentikator untuk menguji WebAuthn (fingerprint, security key).
Example:
await driver.addVirtualAuthenticator({ protocol: 'ctap2', transport: 'usb' });Output: Autentikator virtual ditambahkan
Virtual Authenticator (WebAuthn)Mensimulasikan autentikator untuk menguji WebAuthn (fingerprint, security key).
await driver.addVirtualAuthenticator({ protocol: 'ctap2', transport: 'usb' });Autentikator virtual ditambahkan
Print PageDescription: Mengubah halaman menjadi PDF.
Example:
const pdf = await driver.printPage({ orientation: 'landscape' });Output: Base64 PDF
Print PageMengubah halaman menjadi PDF.
const pdf = await driver.printPage({ orientation: 'landscape' });Base64 PDF
Network Interception (CDP)Description: Mengintersep permintaan jaringan melalui Chrome DevTools Protocol (ChromeDriver).
Example:
const cdp = await driver.createCDPConnection('page');
await cdp.execute('Network.setBlockedURLs', { urls: ['*.css'] });Output: CSS diblokir
Network Interception (CDP)Mengintersep permintaan jaringan melalui Chrome DevTools Protocol (ChromeDriver).
const cdp = await driver.createCDPConnection('page');
await cdp.execute('Network.setBlockedURLs', { urls: ['*.css'] });CSS diblokir
PermissionsDescription: Mengatur izin browser (geolocation, notifications, dll).
Example:
await driver.setPermission('geolocation', 'granted');Output: Izin diberikan
PermissionsMengatur izin browser (geolocation, notifications, dll).
await driver.setPermission('geolocation', 'granted');Izin diberikan
BEST-PRACTICES
Name
Description
Example
Output
Gunakan Page Object ModelDescription: Abstraksi halaman menjadi objek terpisah untuk pemeliharaan yang lebih baik.
Example:
class LoginPage { constructor(driver) { this.driver = driver; } async login(user, pass) { ... } }Output: Test mudah dirawat
Gunakan Page Object ModelAbstraksi halaman menjadi objek terpisah untuk pemeliharaan yang lebih baik.
class LoginPage { constructor(driver) { this.driver = driver; } async login(user, pass) { ... } }Test mudah dirawat
Hindari Thread.sleep, gunakan Explicit WaitDescription: Menunggu waktu tetap tidak efisien dan flaky.
Example:
await driver.wait(until.elementLocated(By.id('result')), 10000);Output: Tes lebih stabil
Hindari Thread.sleep, gunakan Explicit WaitMenunggu waktu tetap tidak efisien dan flaky.
await driver.wait(until.elementLocated(By.id('result')), 10000);Tes lebih stabil
Headless Mode untuk CI/CDDescription: Jalankan browser dalam mode headless agar lebih cepat dan tidak membutuhkan display.
Example:
capabilities: { 'goog:chromeOptions': { args: ['--headless'] } }Output: Browser tanpa GUI
Headless Mode untuk CI/CDJalankan browser dalam mode headless agar lebih cepat dan tidak membutuhkan display.
capabilities: { 'goog:chromeOptions': { args: ['--headless'] } }Browser tanpa GUI
Tangkap Screenshot saat GagalDescription: Ambil screenshot ketika test gagal untuk debugging.
Example:
afterEach(async function() { if (this.currentTest.state === 'failed') { await driver.takeScreenshot() } });Output: Bukti kegagalan
Tangkap Screenshot saat GagalAmbil screenshot ketika test gagal untuk debugging.
afterEach(async function() { if (this.currentTest.state === 'failed') { await driver.takeScreenshot() } });Bukti kegagalan