Skip to main content
Selenium is a powerful browser automation framework that works seamlessly with Hyperbrowser sessions. This guide shows you how to connect Selenium to your cloud browser sessions.

Installation

First, install Selenium:
npm install @hyperbrowser/sdk selenium-webdriver dotenv

Basic Connection

Connect Selenium to a Hyperbrowser session:
import dotenv from "dotenv";
import https from "https";
import { Builder, WebDriver } from "selenium-webdriver";
import fs from "fs";
import { Options } from "selenium-webdriver/chrome";
import { Hyperbrowser } from "@hyperbrowser/sdk";

// Load environment variables from .env file
dotenv.config();

const client = new Hyperbrowser({ apiKey: process.env.HYPERBROWSER_API_KEY });

async function main() {
  const session = await client.sessions.create();

  if (!session.webdriverEndpoint) {
    await client.sessions.stop(session.id);
    throw new Error("No webdriver endpoint found");
  }

  const customHttpsAgent = new https.Agent({});
  (customHttpsAgent as any).addRequest = (req: any, options: any) => {
    req.setHeader("x-hyperbrowser-token", session.token);
    (https.Agent.prototype as any).addRequest.call(
      customHttpsAgent,
      req,
      options
    );
  };

  const driver: WebDriver = await new Builder()
    .forBrowser("chrome")
    .usingHttpAgent(customHttpsAgent)
    .usingServer(session.webdriverEndpoint)
    .setChromeOptions(new Options())
    .build();

  try {
    // Navigate to a URL
    await driver.get("https://www.google.com");
    console.log("Navigated to Google");

    // Search
    const searchBox = await driver.findElement({ name: "q" });
    await searchBox.sendKeys("Selenium WebDriver");
    await searchBox.submit();
    console.log("Performed search");

    // Screenshot
    await driver.takeScreenshot().then((data) => {
      fs.writeFileSync("search_results.png", data, "base64");
    });
    console.log("Screenshot saved");
  } finally {
    await driver.quit();
    await client.sessions.stop(session.id);
  }
}

main().catch(console.error);
Please contact us at info@hyperbrowser.ai to get access to using Selenium with Hyperbrowser.

Next Steps