Skip to main content

DriverFactory

The DriverFactory class is a thread-safe factory for creating and managing WebDriver instances for web and mobile testing.

Features

  • Thread-safe driver management
  • Support for local and remote WebDriver instances
  • Mobile driver support (Android/iOS)
  • Fluent configuration API
  • Built-in event listeners and logging

Web Driver Creation

Local Web Driver

// Basic local Chrome driver
WebDriver driver = DriverFactory.getNewLocalDriver(LocalDriverType.Chrome);

// Configured Chrome driver
WebDriver driver = DriverFactory.getNewLocalDriver(
LocalDriverType.Chrome,
HeadlessMode.False,
PrivateMode.True,
PageLoadStrategyMode.Normal,
WebSecurityMode.SecureMode,
SandboxMode.Sandbox
);

Remote Web Driver

// Remote driver with Selenium Grid
WebDriver driver = DriverFactory.getNewRemoteDriver(
RemoteDriverType.Remote_Chrome,
new URL("http://localhost:4444"),
capabilities
);

Mobile Driver Creation

// Android driver
AndroidDriver driver = DriverFactory.getNewMobileDriver(
MobileDriverType.Android,
new URL("http://localhost:4723"),
capabilities
);

// iOS driver
IOSDriver driver = DriverFactory.getNewMobileDriver(
MobileDriverType.IOS,
new URL("http://localhost:4723"),
capabilities
);

Configuration Builder Pattern

Starting from version 2.0.3, Ellithium supports a fluent builder pattern for driver configuration:

// Local driver config
LocalDriverConfig config = new LocalDriverConfig(
LocalDriverType.Chrome,
HeadlessMode.False,
PrivateMode.False,
PageLoadStrategyMode.Normal,
WebSecurityMode.SecureMode,
SandboxMode.Sandbox
);
WebDriver driver = DriverFactory.getNewDriver(config);

// Mobile driver config
MobileDriverConfig mobileConfig = new MobileDriverConfig(
MobileDriverType.Android,
new URL("http://localhost:4723"),
capabilities
);
AndroidDriver driver = DriverFactory.getNewDriver(mobileConfig);

Driver Management

// Get current thread's driver
WebDriver currentDriver = DriverFactory.getCurrentDriver();

// Quit and cleanup
DriverFactory.quitDriver();

Default Configuration Values

When not explicitly specified, the following default values are used:

OptionDefault ValueDescription
HeadlessModefalseBrowser headless mode (not supported with Safari)
PageLoadStrategyNormalPage load strategy (Normal or Eager)
PrivateModeFalsePrivate/Incognito mode
SandboxModeSandboxBrowser sandbox mode (not supported with Safari)
WebSecurityModeTrueWeb security settings (not supported with Safari)