|
1 | | -# Web driver extras |
2 | | -Web driver extras is a set of support and utility types for **Selenium Web Driver**, a suite for browser automation, particularly useful for the testing of web applications. |
| 1 | +# WebDriver extensions |
3 | 2 |
|
4 | | -This library is particularly aimed at providing an abstract way of [creating and configuring] `IWebDriver` instances, in such a way that test logic does not need to know anything about which web browser is in use, or how it has been configured. |
| 3 | +This small library provides some utility functionality for **[Selenium WebDriver]**. |
| 4 | +These features may be used individually or together. |
5 | 5 |
|
6 | | -It also provides [an attempted solution] to deal with some of the quirks and differences in behaviour between web browsers. |
| 6 | +* [A universal WebDriver factory] |
| 7 | +* [A mechanism for dealing with browser-specific quirks] |
| 8 | +* [Types for convenient identification of browsers & versions] |
7 | 9 |
|
8 | | -Finally it offers an intgeration with a popular cloud-based provider of web drivers (free for open source projects): [Sauce Labs]. |
| 10 | +The types in this library integrate with some commonly-used .NET technologies: |
9 | 11 |
|
10 | | -[creating and configuring]: https://github.com/csf-dev/WebDriverExtras/wiki/WebDriverFactories |
11 | | -[an attempted solution]: https://github.com/csf-dev/WebDriverExtras/wiki/WebBrowserFlags |
12 | | -[Sauce Labs]: https://github.com/csf-dev/WebDriverExtras/wiki/SauceLabsIntegration |
| 12 | +* [Dependency injection] |
| 13 | +* [The Options Pattern] |
| 14 | +* [.NET Configuration] |
13 | 15 |
|
14 | | -## History |
15 | | -Web driver extras was originally part of another project - for the **[Screenplay testing pattern]** - but it has since been forked away into a project of its own. Screenplay still makes use of this library as a NuGet package. |
| 16 | +[Selenium WebDriver]: https://www.selenium.dev/documentation/webdriver/ |
| 17 | +[A universal WebDriver factory]: https://csf-dev.github.io/CSF.Extensions.WebDriver/docs/index.html |
| 18 | +[A mechanism for dealing with browser-specific quirks]: https://csf-dev.github.io/CSF.Extensions.WebDriver/docs/Quirks.html |
| 19 | +[Types for convenient identification of browsers & versions]: https://csf-dev.github.io/CSF.Extensions.WebDriver/docs/DriverIdentification.html |
| 20 | +[Dependency injection]: https://learn.microsoft.com/en-us/dotnet/core/extensions/dependency-injection |
| 21 | +[The Options Pattern]: https://learn.microsoft.com/en-us/dotnet/core/extensions/options |
| 22 | +[.NET Configuration]: https://learn.microsoft.com/en-us/dotnet/core/extensions/configuration |
16 | 23 |
|
17 | | -[Screenplay testing pattern]: https://github.com/csf-dev/CSF.Screenplay |
| 24 | +## Usages |
| 25 | + |
| 26 | +This functionality may be especially useful to those who are interested in using Selenium with a wide range of browsers and/or WebDriver implementations. |
| 27 | + |
| 28 | +* The universal factory allows you to keep your target WebDriver/browser configurations out of code. |
| 29 | +* The quirks mechanism allows for fine-grained and tightly-targeted application of workarounds for differences in behaviour or limitations which are specific to a small number of browser/driver/version ranges. |
| 30 | + * The use of configuration data here allows for quick configuration-based override of which browsers/versions are affected by which quirks. This is useful as browser versions are released at high velocity and _things change_. |
| 31 | +* The browser identification mechanism is primarily a dependency of the quirks mechanism but may be used standalone. |
0 commit comments