Skip to content

Selenium Guide

Early Access

Connect Selenium to Steel for managed browser sessions.

Limited Feature Support

Selenium integration is in early stages and NOT at feature parity with Playwright/Puppeteer:

  • No automatic CAPTCHA solving
  • No custom proxy configurations
  • Limited advanced session management
  • No live session viewer support

Custom Connection Handler

Selenium requires a custom connection class to pass Steel headers:

python
import os
from selenium.webdriver.remote.remote_connection import RemoteConnection

class SteelRemoteConnection(RemoteConnection):
    def __init__(self, remote_server_addr: str, session_id: str):
        super().__init__(remote_server_addr)
        self._session_id = session_id

    def get_remote_connection_headers(self, parsed_url, keep_alive=False):
        headers = super().get_remote_connection_headers(parsed_url, keep_alive)
        headers.update({
            'steel-api-key': os.environ.get("STEEL_API_KEY"),
            'session-id': self._session_id
        })
        return headers

Connect to Steel

python
import os
from steel import Steel
from selenium import webdriver

client = Steel(steel_api_key=os.getenv('STEEL_API_KEY'))

def main():
    # Create session with is_selenium=True
    session = client.sessions.create(is_selenium=True)

    # Connect via custom handler
    driver = webdriver.Remote(
        command_executor=SteelRemoteConnection(
            remote_server_addr='http://connect.steelbrowser.com/selenium',
            session_id=session.id
        ),
        options=webdriver.ChromeOptions()
    )

    driver.get('https://example.com')
    print(driver.title)

    # Cleanup
    driver.quit()
    client.sessions.release(session.id)

main()

Key Differences from Playwright/Puppeteer

  1. Must pass is_selenium=True when creating the session
  2. Connects via http://connect.steelbrowser.com/selenium (HTTP, not WebSocket)
  3. Requires custom RemoteConnection subclass for auth headers

Verification Checklist

  • [ ] Install: pip install steel-sdk selenium
  • [ ] Set STEEL_API_KEY environment variable
  • [ ] Create SteelRemoteConnection class
  • [ ] Test basic connection
  • [ ] Confirm session cleanup

SOP Documentation Hub - Built from Steel.dev Official Docs