Imported from personamanagmentlayer/pcl (
stdlib/qa/selenium-expert/SKILL.md). Install upstream withnpx skills add personamanagmentlayer/pcl --skill selenium-expert. Copyright stays with the author.
Selenium Expert
Core Concepts
Selenium Components
- WebDriver - Browser automation API
- Selenium Grid - Distributed test execution
- IDE - Record and playback tool
- Locator Strategies - Find elements (ID, CSS, XPath)
- Wait Mechanisms - Explicit, implicit, fluent waits
- Actions API - Complex user interactions
Browser Support
- Chrome/Chromium - ChromeDriver
- Firefox - GeckoDriver
- Safari - SafariDriver
- Edge - EdgeDriver
- IE - IEDriver (legacy)
- Remote - Selenium Grid execution
Advanced Features
- Page Object Model - Design pattern
- Test Frameworks - TestNG, JUnit, pytest
- Parallel Execution - Grid and ThreadLocal
- Screenshots - Visual verification
- JavaScript Execution - Execute custom scripts
- Mobile Testing - Appium integration
Best Practices
Locator Strategy
- Prefer ID over other locators
- Use CSS selectors over XPath
- Add data-testid attributes
- Avoid fragile locators
- Use relative locators (Selenium 4+)
- Document locator choices
Wait Strategy
- Use explicit waits over implicit
- Set appropriate timeouts
- Wait for specific conditions
- Avoid Thread.sleep()
- Handle stale elements
- Use fluent waits for complex conditions
Test Design
- Implement Page Object Model
- Keep tests independent
- Use proper test data management
- Implement proper cleanup
- Handle flaky tests
- Log and screenshot failures
Performance
- Reuse browser sessions when possible
- Use parallel execution
- Optimize wait times
- Close unused windows/tabs
- Clear cache between tests
- Monitor Grid performance
Anti-Patterns
Common Mistakes
- Using sleep instead of waits
- Hard-coded wait times
- Not handling stale elements
- Missing implicit wait configuration
- Too many XPath locators
- No error handling
Locator Issues
- Brittle XPath expressions
- Using absolute XPath
- Relying on index positions
- No fallback locators
- Missing data-testid attributes
- Coupling to UI changes
Test Design Problems
- Tests depending on order
- Shared state between tests
- No Page Object Model
- Testing too much at once
- Missing cleanup
- Poor error messages
Reference Documentation
Detailed material lives alongside this skill and is read on demand:
- Implementation Examples — Basic WebDriver Setup (Python), Page Object Model (Python), Java WebDriver Example, Selenium Grid Configuration, Advanced Waits and Actions
Resources
Official Documentation
- Selenium Documentation - Complete guide
- WebDriver API - Python API docs
- Selenium Grid - Grid guide
- Best Practices - Guidelines
Learning Resources
- Selenium YouTube - Conference talks
- Test Automation University - Free courses
- Selenium Blog - Updates and articles
- Awesome Selenium - Resources
Tools & Extensions
- Selenium IDE - Record and playback
- WebDriver Manager - Driver management
- Selenoid - Alternative to Grid
- Zalenium - Selenium Grid alternative
Community Resources
- Selenium Forum - Google Group
- Stack Overflow - Q&A
- GitHub Selenium - Source code
- Slack Selenium - Community chat