AsyncWebDriver is .Net WebDriver rewritten to async/await pattern from selenium project. It is base for browser drivers. AsyncWebDriver has synchronous wrapper SyncWebDriver.
It is Firefox driver. It connects directly to Marionette and is async from this connection. No need in geckodriver. AsyncFirefoxDriver implements IWebBrowserClient and can be used as AsyncWebDriver.
But the main MISSION of this project is to provide Firefox specific capabilities. Reqest listener and profiles worker already here.
More extensions in AsyncFirefoxDriverExtensions project.
Debugger, all what addons and extensions can do, we can do with AsyncFirefoxDriver (coming soon).
Chrome WebDriver and Chrome DevTools in one library.
It connects directly to Chrome DevTools and is async from this connection. No need in chromedriver.
Opera WebDriver and Opera DevTools in one library.
It connects directly to Opera DevTools and is async from this connection. No need in operadriver.
If it will be interestring we can add async drivers.
If you want to include AsyncFirefoxDriver in your project, you can install it directly from NuGet
PM> Install-Package AsyncFirefoxDriver
If you want to include AsyncChromeDriver, you can install it directly from NuGet
PM> Install-Package AsyncChromeDriver
var asyncChromeDriver = new AsyncChromeDriver();
var webDriver = new WebDriver(asyncChromeDriver);
await webDriver.GoToUrl("https://www.google.com/");
var query = await webDriver.FindElement(By.Name("q"));
foreach (var v in "ToCSharp".ToList())
{
await Task.Delay(500 + new Random().Next(500));
await query.SendKeys(v.ToString());
}
await Task.Delay(500);
await query.SendKeys(Keys.Enter);
var allCookies = await asyncChromeDriver.DevTools.Session.Network.GetAllCookies(new GetAllCookiesCommand());
var profileName = "default";
if (FirefoxProfilesWorker.GetMarionettePort(profileName) == 0)
FirefoxProfilesWorker.SetMarionettePort(profileName, 5432);
FirefoxProfilesWorker.OpenFirefoxProfile(profileName);
var firefoxDriver = new AsyncFirefoxDriver(profileName);
await firefoxDriver.Connect();
var webDriver = new WebDriver(firefoxDriver);
await webDriver.SetContextContent();
await webDriver.GoToUrl("https://www.google.com/");
var query = await webDriver.FindElement(By.Name("q"));
foreach (var v in "ToCSharp".ToList())
{
await Task.Delay(500 + new Random().Next(500));
await query.SendKeys(v.ToString());
}
await Task.Delay(500);
await query.SendKeys(Keys.Enter);
Look at AsyncFirefoxDriverExample, AsyncChromeDriverExample.
Run built Example in release tab.
ZuRequestListener is AsyncFirefoxDriver extension. It is example how to extend WebDriver functionality. Does not work well in Multiprocess Firefox.
- LiveIp to get ip
- LivePreferences to view and edit Firefox preferences of running profile
- AddonManager have methods GetAddonsList, InstallAddon, InstallTemporaryAddon, UninstallAddon.