Skip to content

jgilbert2017/AsyncWebDriver

 
 

Repository files navigation

AsyncWebDriver

AsyncWebDriver is .Net WebDriver rewritten to async/await pattern from selenium project. It is base for browser drivers. AsyncWebDriver has synchronous wrapper SyncWebDriver.

Join the chat at https://gitter.im/AsyncWebDriver/Lobby

AsyncFirefoxDriver

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.

Other browsers

If it will be interestring we can add async drivers.

Usage

Install via NuGet

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

Write code example

Chrome

     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());

Firefox

     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);

Examples

Look at AsyncFirefoxDriverExample, AsyncChromeDriverExample.

Run built Example in release tab.

ZuRequestListener

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.

About

AsyncWebDriver is .Net WebDriver rewritten to async/await pattern

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • C# 96.9%
  • JavaScript 3.1%