CtrlK
BlogDocsLog inGet started
Tessl Logo

tessl/npm-wd

WebDriver/Selenium 2 Node.js client for browser automation and testing

Pending
Overview
Eval results
Files

navigation.mddocs/

Navigation & Page Interaction

Navigation commands for browsing web pages, managing browser history, and retrieving page information.

Capabilities

Page Navigation

Navigate to URLs, refresh pages, and control browser history.

/**
 * Navigate to a specific URL
 * @param url - Target URL to navigate to
 * @param cb - Callback receiving (err)
 */
get(url: string, cb?: callback): void;

/**
 * Refresh the current page
 * @param cb - Callback receiving (err)
 */
refresh(cb?: callback): void;

/**
 * Navigate back in browser history
 * @param cb - Callback receiving (err)
 */
back(cb?: callback): void;

/**
 * Navigate forward in browser history
 * @param cb - Callback receiving (err)
 */
forward(cb?: callback): void;

Usage Examples:

// Navigate to different pages
browser.get('https://example.com', function(err) {
  if (err) throw err;
  console.log('Navigated to example.com');
});

// Use browser history
browser.back(function(err) {
  if (err) throw err;
  browser.forward(); // Go forward again
});

// Promise chain style
browser
  .get('https://example.com')
  .get('https://example.com/login')
  .back()                    // Return to homepage
  .refresh();                // Reload the page

Page Information

Retrieve information about the current page.

/**
 * Get current page URL
 * @param cb - Callback receiving (err, url)
 */
url(cb?: callback): string;

/**
 * Get current page title
 * @param cb - Callback receiving (err, title)
 */
title(cb?: callback): string;

/**
 * Get page source HTML
 * @param cb - Callback receiving (err, source)
 */
source(cb?: callback): string;

Usage Examples:

// Get page information
browser.title(function(err, title) {
  console.log('Page title:', title);
});

browser.url(function(err, currentUrl) {
  console.log('Current URL:', currentUrl);
});

browser.source(function(err, html) {
  console.log('Page source length:', html.length);
});

// Promise chain style
browser
  .get('https://example.com')
  .title()
  .then(title => {
    console.log('Title:', title);
    return browser.url();
  })
  .then(url => {
    console.log('URL:', url);
  });

Screenshot Capture

Capture screenshots of the current page or specific elements.

/**
 * Take a screenshot of the current page
 * @param cb - Callback receiving (err, base64Image)
 */
takeScreenshot(cb?: callback): string;

/**
 * Save screenshot to file
 * @param filename - Path to save the screenshot
 * @param cb - Callback receiving (err)
 */
saveScreenshot(filename: string, cb?: callback): void;

Usage Examples:

// Take screenshot and get base64 data
browser.takeScreenshot(function(err, base64Image) {
  if (err) throw err;
  console.log('Screenshot captured, size:', base64Image.length);
  
  // Save to file (you would need to decode base64)
  const fs = require('fs');
  fs.writeFileSync('screenshot.png', base64Image, 'base64');
});

// Save screenshot directly to file
browser.saveScreenshot('test-results/screenshot.png', function(err) {
  if (err) throw err;
  console.log('Screenshot saved');
});

// Promise chain style
browser
  .get('https://example.com')
  .saveScreenshot('./screenshots/homepage.png')
  .then(() => console.log('Screenshot saved'));

Alert Handling

Handle JavaScript alerts, confirms, and prompts.

/**
 * Get text from current alert dialog
 * @param cb - Callback receiving (err, text)
 */
alertText(cb?: callback): string;

/**
 * Send keys to alert prompt dialog
 * @param keys - Text to send to the prompt
 * @param cb - Callback receiving (err)
 */
alertKeys(keys: string, cb?: callback): void;

/**
 * Accept alert dialog (click OK)
 * @param cb - Callback receiving (err)
 */
acceptAlert(cb?: callback): void;

/**
 * Dismiss alert dialog (click Cancel)
 * @param cb - Callback receiving (err)
 */
dismissAlert(cb?: callback): void;

Usage Examples:

// Handle a confirmation dialog
browser.alertText(function(err, text) {
  console.log('Alert text:', text);
  
  if (text.includes('Are you sure?')) {
    browser.acceptAlert(); // Click OK
  } else {
    browser.dismissAlert(); // Click Cancel
  }
});

// Handle a prompt dialog
browser.alertKeys('My input text', function(err) {
  browser.acceptAlert(); // Submit the prompt
});

// Promise chain style
browser
  .elementById('delete-button')
  .click()
  .alertText()
  .then(text => {
    console.log('Confirmation:', text);
    return browser.acceptAlert();
  });

Cookie Management

Manage browser cookies for session handling and testing.

/**
 * Get all cookies for current domain
 * @param cb - Callback receiving (err, cookies)
 */
allCookies(cb?: callback): Cookie[];

/**
 * Set a cookie
 * @param cookie - Cookie object to set
 * @param cb - Callback receiving (err)
 */
setCookie(cookie: Cookie, cb?: callback): void;

/**
 * Delete all cookies
 * @param cb - Callback receiving (err)
 */
deleteAllCookies(cb?: callback): void;

/**
 * Delete a specific cookie by name
 * @param name - Cookie name to delete
 * @param cb - Callback receiving (err)
 */
deleteCookie(name: string, cb?: callback): void;

interface Cookie {
  name: string;
  value: string;
  domain?: string;
  path?: string;
  secure?: boolean;
  httpOnly?: boolean;
  expiry?: number;
}

Usage Examples:

// Set a cookie
browser.setCookie({
  name: 'session_id',
  value: 'abc123',
  domain: 'example.com',
  path: '/',
  secure: true
}, function(err) {
  if (err) throw err;
  console.log('Cookie set');
});

// Get all cookies
browser.allCookies(function(err, cookies) {
  cookies.forEach(cookie => {
    console.log(`${cookie.name}=${cookie.value}`);
  });
});

// Delete specific cookie
browser.deleteCookie('session_id');

// Clear all cookies
browser.deleteAllCookies();

Local Storage

Access browser local storage for web application testing.

/**
 * Set a local storage key-value pair
 * @param key - Storage key
 * @param value - Storage value
 * @param cb - Callback receiving (err)
 */
setLocalStorageKey(key: string, value: string, cb?: callback): void;

/**
 * Get value from local storage
 * @param key - Storage key to retrieve
 * @param cb - Callback receiving (err, value)
 */
getLocalStorageKey(key: string, cb?: callback): string;

/**
 * Remove a key from local storage
 * @param key - Storage key to remove
 * @param cb - Callback receiving (err)
 */
removeLocalStorageKey(key: string, cb?: callback): void;

/**
 * Clear all local storage
 * @param cb - Callback receiving (err)
 */
clearLocalStorage(cb?: callback): void;

Usage Examples:

// Set local storage data
browser.setLocalStorageKey('user_preferences', JSON.stringify({
  theme: 'dark',
  language: 'en'
}));

// Get local storage data
browser.getLocalStorageKey('user_preferences', function(err, value) {
  const prefs = JSON.parse(value);
  console.log('User theme:', prefs.theme);
});

// Clear storage
browser.clearLocalStorage();

Install with Tessl CLI

npx tessl i tessl/npm-wd

docs

browser-sessions.md

configuration.md

element-location.md

index.md

javascript-execution.md

mobile-testing.md

navigation.md

touch-actions.md

user-input.md

waiting.md

window-management.md

tile.json