Пример #1
0
        public static IServiceProvider GetServiceProvider(bool headless)
        {
            // Force local Browser running for local file
            IWebDriverConfiguration driverConfig =
                WebDriverConfigurationBuilder.Start()
                .WithHeadless(headless)
                .WithBrowser(Browser.Firefox)
                .WithWindowSize(WindowSize.Hd)
                .Build();

            IWebDriverManager driverManager = ServiceCollectionFactory.GetDefaultServiceCollection(true, driverConfig)
                                              .BuildServiceProvider()
                                              .GetRequiredService <IWebDriverManager>();

            IServiceCollection serviceCollection = new ServiceCollection();

            serviceCollection.AddSingleton <IWebDriverManager>(driverManager);
            serviceCollection.AddSingleton <IWebDriver>(driverManager.Get());

            serviceCollection.Scan(scan => scan
                                   .FromAssemblyOf <PageTests>()
                                   .AddClasses()
                                   .UsingRegistrationStrategy(RegistrationStrategy.Skip)
                                   .AsSelf()
                                   .WithSingletonLifetime());

            return(serviceCollection.BuildServiceProvider());
        }
Пример #2
0
        public void LocalWebDriverFactoryWorks(Browser browser, BrowserVisibility browserVisibility)
        {
            IWebDriverConfiguration configuration = WebDriverConfigurationBuilder.Start()
                                                    .WithBrowser(browser)
                                                    .WithHeadless(browserVisibility == BrowserVisibility.Headless)
                                                    .Build();

            TestContext.WriteLine($"Configuration = {JsonConvert.SerializeObject(configuration, sizeJsonConverter)}");
            Driver = WebDriverFactory.GetWebDriver(configuration);
            Assertions.AssertThatPageCanBeLoaded(Driver);
        }
Пример #3
0
        public void RequestingUnsupportedWebDriverThrowsInformativeException(Browser browser)
        {
            IWebDriverConfiguration configuration = WebDriverConfigurationBuilder.Start()
                                                    .WithBrowser(browser)
                                                    .Build();

            TestContext.WriteLine($"Configuration = {JsonConvert.SerializeObject(configuration, sizeJsonConverter)}");
            void Act() => WebDriverFactory.GetWebDriver(configuration);

            Assertions.AssertThatRequestingAnUnsupportedBrowserThrowsCorrectException(Act, browser, thisPlatform);
        }
Пример #4
0
        public void RequestingUnsupportedHeadlessBrowserThrowsInformativeException(Browser browser)
        {
            IWebDriverConfiguration configuration = WebDriverConfigurationBuilder.Start()
                                                    .WithBrowser(browser)
                                                    .RunHeadless()
                                                    .Build();

            void Act() => WebDriverFactory.GetWebDriver(configuration);

            Assertions.AssertThatRequestingAnUnsupportedHeadlessBrowserThrowsCorrectException(Act, browser);
        }
Пример #5
0
        public void BrowserIsOfRequestedSize(WindowSize windowSize, int expectedWidth, int expectedHeight)
        {
            IWebDriverConfiguration configuration = WebDriverConfigurationBuilder.Start()
                                                    .WithBrowser(Browser.Firefox)
                                                    .RunHeadless()
                                                    .WithWindowSize(windowSize)
                                                    .Build();

            TestContext.WriteLine($"Configuration = {JsonConvert.SerializeObject(configuration, sizeJsonConverter)}");
            Driver = WebDriverFactory.GetWebDriver(configuration);
            Assertions.AssertThatBrowserWindowSizeIsCorrect(Driver, expectedWidth, expectedHeight);
        }
        /// <summary>
        /// Return a WebDriver instance of the given configuration.
        /// </summary>
        /// <param name="configuration"></param>
        /// <returns></returns>
        public IWebDriver GetWebDriver(IWebDriverConfiguration configuration)
        {
            Logger.Info($"WebDriver requested using {configuration}");
            IWebDriver driver = configuration.IsLocal ?
                                LocalWebDriverFactory.GetWebDriver(configuration) :
                                RemoteWebDriverFactory.GetWebDriver(configuration);

            if (IsDebugEnabled)
            {
                IJavaScriptExecutor js = (IJavaScriptExecutor)driver;
                Logger.Debug($"{driver} successfully launched. Agent String: {js.ExecuteScript("return navigator.userAgent;")}");
            }

            return(driver);
        }
Пример #7
0
        /// <summary>
        /// Return a RemoteWebDriver instance of the given configuration.
        /// </summary>
        /// <param name="configuration"></param>
        /// <returns></returns>
        public IWebDriver GetWebDriver(IWebDriverConfiguration configuration)
        {
            if (configuration.IsLocal)
            {
                Exception ex = new ArgumentException("A Local WebDriver Instance cannot be generated by this method.");
                Logger.Fatal("Invalid WebDriver Configuration requested.", ex);
                throw ex;
            }

            return(GetWebDriver(
                       configuration.Browser,
                       configuration.PlatformType,
                       configuration.WindowSize,
                       configuration.Headless,
                       configuration.WindowDefinedSize
                       ));
        }
        /// <summary>
        /// Return a local WebDriver instance of the given configuration.
        /// </summary>
        /// <param name="configuration"></param>
        /// <returns></returns>
        public IWebDriver GetWebDriver(IWebDriverConfiguration configuration)
        {
            Logger.Info($"Local WebDriver requested using configuration: {configuration}");

            if (!configuration.IsLocal)
            {
                Exception ex = new ArgumentException("A RemoteWebDriver Instance cannot be generated by this method.");
                Logger.Fatal("Invalid WebDriver Configuration requested.", ex);
                throw ex;
            }

            return(GetWebDriver(
                       configuration.Browser,
                       configuration.WindowSize,
                       configuration.Headless,
                       configuration.WindowDefinedSize
                       ));
        }
Пример #9
0
        public void RemoteWebDriverFactoryWorks(
            PlatformType platformType,
            Browser browser,
            BrowserVisibility browserVisibility = BrowserVisibility.OnScreen)
        {
            IWebDriverConfiguration configuration = WebDriverConfigurationBuilder.Start()
                                                    .WithBrowser(browser)
                                                    .WithHeadless(browserVisibility == BrowserVisibility.Headless)
                                                    .RunRemotelyOn(gridUrl)
                                                    .WithPlatformType(platformType)
                                                    .Build();

            TestContext.WriteLine($"Configuration = {JsonConvert.SerializeObject(configuration, sizeJsonConverter)}");
            Driver = WebDriverFactory.GetWebDriver(configuration);
            Assertions.AssertThatPageCanBeLoaded(Driver);
            Driver.IsRunningHeadless().Should()
            .Be(browserVisibility == BrowserVisibility.Headless,
                $"{browserVisibility.ToString()} was requested");
        }
Пример #10
0
        public static IServiceCollection GetDefaultServiceCollection(
            IWebDriverConfiguration driverConfig,
            DriverPath driverPath)
        {
            IServiceCollection services = new ServiceCollection();

            services.AddSingleton <IDriverOptionsFactory, DefaultDriverOptionsFactory>();
            services.AddSingleton <IWebDriverReSizer, WebDriverReSizer>();

            if (driverPath != null)
            {
                services.AddSingleton <DriverPath>(driverPath);
            }

            services.AddSingleton(driverConfig ?? WebDriverConfigurationBuilder.Start().Build());
            services.AddSingleton <ILocalWebDriverFactory, DefaultLocalWebDriverFactory>();
            services.AddSingleton <IRemoteWebDriverFactory, DefaultRemoteWebDriverFactory>();

            services.AddSingleton <IWebDriverFactory, DefaultWebDriverFactory>();
            services.AddSingleton <IWebDriverManager, WebDriverManager>();

            return(services);
        }
Пример #11
0
 public static IServiceCollection GetDefaultServiceCollection(
     IWebDriverConfiguration driverConfig)
 {
     return(GetDefaultServiceCollection(driverConfig, null));
 }
 /// <summary>
 /// Configuration based constructor for a WebDriverManager
 /// </summary>
 /// <param name="factory"></param>
 /// <param name="configuration"></param>
 public WebDriverManager(IWebDriverFactory factory, IWebDriverConfiguration configuration)
 {
     this.factory      = factory;
     this.driverConfig = configuration;
 }
        public IWebDriver GetWebDriver(IWebDriverConfiguration configuration)
        {
            Logger.Info($"Fake WebDriver requested.");

            return(new FakeWebDriver());
        }
Пример #14
0
 /// <summary>
 /// Return a DriverFactory instance for use in .NET Core projects.
 /// Try using driverPath = new DriverPath(Assembly.GetCallingAssembly()) when testing locally from .NET core projects.
 /// </summary>
 /// <param name="configuration"></param>
 /// <param name="driverOptionsFactory"></param>
 /// <param name="webDriverReSizer"></param>
 public DefaultRemoteWebDriverFactory(IDriverOptionsFactory driverOptionsFactory, IWebDriverConfiguration configuration, IWebDriverReSizer webDriverReSizer)
     : this(driverOptionsFactory, configuration.GridUri, webDriverReSizer)
 {
 }