#browser-automation #cross-browser-testing
## Purpose
Selenium allows for automating a browser...
- ... locally.
- ... on a remote machine (with Selenium Server).
- ... on a set of remote machines (with Selenium Server/Selenium Grid, like [[Sauce Labs]]).
Testing is one use case for Selenium, but it is not limited to that.
## Docs
[selenium.dev](https://selenium.dev)
## Architecture
I have created some diagrams that show the [[+Selenium architecture]].
## Selenium 4
The project is currently working on Selenium 4 which will add access to the browser via [[Chrome DevTools Protocol (CDP) in WebDriver|Chrome DevTools Protocol]].
## Useful official resources
- [Understanding the components](https://www.selenium.dev/documentation/en/webdriver/understanding_the_components/)
- [API documentation for the Selenium JavaScript bindings](https://www.selenium.dev/selenium/docs/api/javascript/index.html)
- [Source code of the Selenium JavaScript bindings](https://github.com/SeleniumHQ/selenium/tree/trunk/javascript/node/selenium-webdriver)
## Useful articles from third parties
- [Relationships between different versions of Selenium](http://yizeng.me/2014/04/25/relationships-between-different-versions-of-selenium) (quite old, but still great)
- [Selenium + Chrome Dev-tools makes a Perfect Browser Automation Recipe](https://medium.com/@sahajamit/selenium-chrome-dev-tools-makes-a-perfect-browser-automation-recipe-c35c7f6a2360)