Extensions for Selenium WebDriver including jQuery/Sizzle selector support.
- Support for nested selectors
- Easy setup: install NuGet package and start using it with your existing Selenium solution
- High quality ensured by continuous integration setup with Appveyor, unit and integration tests and high code coverage
- Well documented code using GitBook
- jQuery/Sizzle selectors support for Selenium WebDriver
- jQuery/Sizzle auto-load on pages on sites that don't use jQuery
- Support for context switching
- Support for
ExpectedConditions
- Support for Page Objects
Run the following command in Visual Studio Package Manager Console.
Install-Package Selenium.WebDriver.Extensions
API documentation can be found on GitBook and user guide is on the wiki.
Create alias for the extension By
to be used.
using By = Selenium.WebDriver.Extensions.By;
If you don't want to override the By
to be used, you can always create JQuerySelector
and SizzleSelector
instances with new
keyword.
Invoke jQuery selectors on the WebDriver.
driver.FindElements(By.JQuerySelector("input:visible"))
You can also chain jQuery traversing methods.
var selector = By.JQuerySelector("div.myclass").Parents(".someClass").NextAll();
driver.FindElement(selector);
If the site that you are testing with Selenium does not include jQuery this extension will automatically load the 3.5.1 version when you run any of the Find*
methods. If you want you can choose to load a different version of jQuery. The library uses jQuery CDN by default, but if you want to use a completely different source, that's also supported
driver.LoadJQuery("1.11.0"); // load specific version from default CDN
driver.LoadJQuery(new Uri("https://some.server/jquery.js")); // load a library from other source
When you create a jQuery selector using By
helper class the resulting selector will use jQuery
as library variable name. If you site is using a different variable name for this purpose you can pass this value as an optional parameter.
var selector = By.JQuerySelector("div", jQueryVariable: "myJQuery");
You can use one JQuerySelector
instance as a context of another JQuerySelector
.
var context = By.JQuerySelector("div.myClass");
var selector = By.JQuerySelector("ol li", context);
driver.FindElements(selector);
Invoke Sizzle selectors on the WebDriver.
driver.FindElements(By.SizzleSelector("input:visible"))
If the site that you are testing with Selenium does not include Sizzle this extension will automatically load the 2.0.0 version when you run any of the Find*
methods. If you want you can choose to load a different version of Sizzle. The library used CloudFlare CDN by default, but if you want to use a completely different source, that's also supported
driver.LoadSizzle("1.11.1"); // load specific version from default CDN
driver.LoadSizzle(new Uri("https://some.server/sizzle.js")); // load a library from other source
You can use one SizzleSelector
instance as a context of another SizzleSelector
. Contrary to jQuery equivalent of this method, only first element from the context is used. This is because it's a limitation of Sizzle.
var context = By.SizzleSelector("div.myClass");
var selector = By.SizzleSelector("ol li", context);
driver.FindElements(selector);