Documentation Index
Fetch the complete documentation index at: https://mintlify.com/dgtlmoon/changedetection.io/llms.txt
Use this file to discover all available pages before exploring further.
What Selenium WebDriver Provides
Selenium WebDriver offers basic browser automation through the legacy WebDriver protocol:- JavaScript Rendering - Execute JavaScript and wait for content to load
- Basic Screenshots - Viewport-only PNG screenshots (no full-page capture)
- Chrome Browser - Uses Selenium Standalone Chrome container
- XPath Element Data - Extract structured data from page elements
- Proxy Support - Basic proxy configuration via Chrome options
Limitations
- No Browser Steps Support - Cannot automate interactions like clicking or form filling
- No Full-Page Screenshots - Only captures visible viewport, not entire scrollable page
- No Status Code Reporting - Always reports 200 OK, regardless of actual HTTP response
- No Visual Selector - Point-and-click element selection not available
- Limited Error Handling - Cannot detect actual page load errors
- Single-Process Limitation - Selenium hub allows only one concurrent browser by default
- Legacy Technology - Based on older WebDriver protocol
Docker Configuration
To use Selenium WebDriver, run a Selenium Standalone Chrome service alongside changedetection.io.Using docker-compose.yml
Uncomment the Selenium service in yourdocker-compose.yml:
Docker Standalone
If running without docker-compose:Environment Variables
Required Configuration
WEBDRIVER_URL - HTTP URL to the Selenium hubOptional Configuration
WEBDRIVER_DELAY_BEFORE_CONTENT_READY - Seconds to wait after page load (default: 5)Proxy Configuration
WebDriver uses Chrome proxy options with thewebdriver_ prefix:
When to Use Selenium WebDriver
Consider Selenium only if:- You already have Selenium infrastructure deployed
- You need compatibility with existing Selenium-based workflows
- You’re migrating from an older changedetection.io version that used Selenium
- Full-page screenshots
- HTTP status code detection
- Browser Steps automation
- Better performance
- Active development and support
JavaScript Rendering
Selenium executes JavaScript on the page with basic waiting:Custom JavaScript Execution
Render Delays
Selenium waits usingimplicitly_wait():
- Navigate to page
- Wait for initial DOM load
- Wait
WEBDRIVER_DELAY_BEFORE_CONTENT_READYseconds - Execute custom JavaScript (if configured)
- Wait another
WEBDRIVER_DELAY_BEFORE_CONTENT_READYseconds - Capture content
Selenium’s waiting is less sophisticated than Playwright’s network idle detection.
Screenshots
Screenshot Limitations
Selenium screenshots have significant limitations:- Viewport Only - Only captures what’s visible in browser window
- No Scrolling - Cannot capture content below the fold
- Fixed Size - Screenshot size matches window size (1280x1024 default)
- PNG Only - Captures as PNG, then converts to JPEG if requested
- No Stitching - No automatic full-page capture
Screenshot Formats
PNG (native format)- Lossless quality
- Larger file size
- No conversion overhead
- Smaller file size
- Quality loss from conversion
- Uses
SCREENSHOT_QUALITYsetting - RGB conversion handles transparency
Window Sizing
Control screenshot size viaCHROME_OPTIONS:
Performance Considerations
Resource Usage
Memory- Selenium hub: ~500MB base
- Chrome browser: ~200-400MB per instance
- Screenshots: ~2-10MB (viewport only)
- Page rendering
- JavaScript execution
- Screenshot PNG encoding
- JPEG conversion (if using JPEG format)
- Default Selenium standalone allows only 1 concurrent session
- Need Selenium Grid for multiple concurrent browsers
- Slower startup than Playwright
Speed Comparison
| Fetcher | Typical Speed | JavaScript | Full Screenshots |
|---|---|---|---|
| HTTP Requests | 100ms | No | No |
| Playwright | 2-5s | Yes | Yes |
| Selenium WebDriver | 5-10s | Yes | No |
Troubleshooting
Connection Issues
Browser Crashes
If Chrome crashes inside the container:Memory Issues
Timeout Errors
”Session already exists” Error
Selenium standalone only allows one session at a time:Migrating to Playwright
If you’re currently using Selenium, migrating to Playwright is straightforward:Step 1: Update docker-compose.yml
Step 2: Update Environment Variables
Step 3: Restart Services
What You Gain
- Full-page screenshots instead of viewport-only
- Actual HTTP status codes (200, 404, 403, etc.)
- Browser Steps automation support
- Visual Selector tool
- Better performance and reliability
- Multiple concurrent browsers
- Active development and updates
What Stays the Same
- Custom JavaScript execution
- XPath and CSS selectors
- Proxy configuration (just change prefix)
- Screenshot capture
- Watch configuration
Comparison with Playwright
| Feature | Selenium WebDriver | Playwright |
|---|---|---|
| JavaScript Rendering | Yes | Yes |
| Full-Page Screenshots | No (viewport only) | Yes |
| HTTP Status Codes | No (always 200) | Yes |
| Browser Steps | No | Yes |
| Visual Selector | No | Yes |
| Screenshot Stitching | No | Yes |
| Concurrent Sessions | 1 (standalone) | 10+ |
| Performance | Slow (5-10s) | Medium (2-5s) |
| Memory Usage | High | Medium |
| Development Status | Deprecated | Active |
| Recommended | No | Yes |
Advanced Configuration
Custom Chrome Options
Full list of supported Chrome arguments:Selenium Grid (Multi-Session)
For concurrent browsers, use Selenium Grid instead of standalone:Remote Selenium Hub
Connect to external Selenium services:Why Selenium is Deprecated
The Selenium WebDriver integration has several architectural limitations:- No Status Reporting - WebDriver protocol doesn’t expose HTTP response codes
- Screenshot Limitations - WebDriver API only supports viewport capture
- Single Process - Selenium standalone design limits concurrency
- No Automation - WebDriver protocol doesn’t support Browser Steps workflow
- Slower Performance - Extra HTTP overhead compared to CDP-based protocols
- Maintenance Burden - Requires separate Selenium hub infrastructure
- Direct access to HTTP responses
- Native full-page screenshot support
- WebSocket connection (lower latency)
- Network event monitoring
- Better automation APIs
Related Documentation
- Playwright - Modern browser integration (recommended)
- Chrome Extension - Add watches from your browser
- Proxy Configuration - Using proxies with WebDriver
- Browser Steps - Available only with Playwright