예제 #1
0
 public async Task <TResult> ExecuteWithRetry <TResult>(IBrowserFactory browserFactory, Func <IBrowser, Task <TResult> > actions)
 {
     using (var browser = browserFactory.GetInstance())
     {
         return(await actions(browser).ConfigureAwait(false));
     }
 }
예제 #2
0
        /// <summary>
        ///     Initializes a new instance of the <see cref="BrowserManager" /> class.
        /// </summary>
        /// <param name="factory">The browser factory implementation to use.</param>
        /// <param name="browserMaxInstances">A dictionary of the maximum instances per <see cref="BrowserType"/> to be maintained in the pool.</param>
        internal BrowserManager(IBrowserFactory factory, IDictionary <BrowserType, int> browserMaxInstances)
        {
            Require.NotNull(() => factory);
            Require.NotNull(() => browserMaxInstances);

            var browserCount = browserMaxInstances.Count;

            Require.GreaterThanOrEqualTo(() => browserCount, 1);

            this.factory = factory;

            var tempDictionary = new Dictionary <BrowserType, BrowserPool>();

            foreach (var type in browserMaxInstances.Keys)
            {
                var maxInstances = browserMaxInstances[type];
                Require.GreaterThanOrEqualTo(() => maxInstances, 1);

                tempDictionary[type] = new BrowserPool(type, maxInstances);
            }

            this.browserPools = new ReadOnlyDictionary <BrowserType, BrowserPool>(tempDictionary);

            this.syncLock = new SemaphoreSlim(1);

            // block on browser creation - we don't want to return from the ctor with the object state in flux
            this.CreateBrowserInstances();
        }
예제 #3
0
 /// <summary>
 /// Creates an instance of a Token SDK.
 /// </summary>
 /// <param name = "channel">GRPC channel</param>
 /// <param name="cryptoEngineFactory">crypto factory instance</param>
 /// <param name="tokenCluster">token cluster</param>
 /// <param name="browserFactory">browser factory</param>
 public TokenClient(
     ManagedChannel channel,
     ICryptoEngineFactory cryptoEngineFactory,
     TokenCluster tokenCluster, IBrowserFactory browserFactory) : base(channel, cryptoEngineFactory, tokenCluster)
 {
     this.browserFactory = browserFactory;
 }
예제 #4
0
 public TwilioVoiceController(IUserService userService, IBibleMetadataService bibleMetadataService, IContentService contentService, IBrowserFactory browserFactory, ITimeService timeService)
 {
     _userService          = userService;
     _bibleMetadataService = bibleMetadataService;
     _contentService       = contentService;
     _browserFactory       = browserFactory;
     _timeService          = timeService;
 }
예제 #5
0
 public BrowserPool(
     IBrowserFactory browserFactory,
     IOptions <GeneralSettings> generalOptions
     )
 {
     this.browserFactory = browserFactory;
     degreeOfParallelism = generalOptions.Value.MaximumDegreeOfParallelism;
     browsers            = new List <IBrowser>(degreeOfParallelism);
     semaphore           = new Semaphore(degreeOfParallelism, degreeOfParallelism);
 }
예제 #6
0
 public MsalInteractiveRequest(
     WebRequestManager webRequestManager,
     CacheManager cacheManager,
     IBrowserFactory browserFactory,
     AuthenticationParameters authParameters)
 {
     _webRequestManager = webRequestManager;
     _cacheManager      = cacheManager;
     _browserFactory    = browserFactory;
     _authParameters    = authParameters;
 }
예제 #7
0
 public Engine(IImageComparer imageComparer, IConfigurationStore configurationStore, IUserConfigStore userConfigStore,
               ILogger <Engine> logger, IBrowserFactory browserFactory, IDirectoryUtils directoryUtils, IRazorRenderer razorRenderer)
 {
     _imageComparer      = imageComparer;
     _configurationStore = configurationStore;
     _userConfigStore    = userConfigStore;
     _logger             = logger;
     _browserFactory     = browserFactory;
     _directoryUtils     = directoryUtils;
     _razorRenderer      = razorRenderer;
 }
예제 #8
0
 public BrowserPoolArbitrator(IBrowserPoolAdvanced browserPool,
                              IBrowserFactory factory,
                              IDateTimeProvider dateTimeProvider,
                              IOptions <BrowserPoolSettings> poolSettings,
                              ILogger <BrowserPoolArbitrator> logger)
 {
     _browserPool      = browserPool;
     _factory          = factory;
     _dateTimeProvider = dateTimeProvider;
     _poolSettings     = poolSettings;
     _logger           = logger;
 }
예제 #9
0
        public void SetUp()
        {
            var config = ContainerConfig.Configure();

            using (var scope = config.BeginLifetimeScope())
            {
                _testSettings = scope.Resolve <ApplicationConfiguration>().GetApplicationConfiguration <TestSettings>();
                _log          = scope.Resolve <ILog>();
                _browser      = scope.Resolve <IBrowserFactory>(new TypedParameter(typeof(ILog), _log));
                _browser.Start(_testSettings.Browser);
                _pages = scope.Resolve <IUoW>(new NamedParameter("_driver", _browser.GetDriver()),
                                              new NamedParameter("_testSettings", _testSettings),
                                              new NamedParameter("_log", _log));
            }
        }
예제 #10
0
        public MovieBuilderPool()
        {
            this.browserFactory = DependencyResolver.Resolve <IBrowserFactory>();

            logger = LoggerFactory.Create("MovieBuilderPool");

            availableWorkers = new ConcurrentQueue <IBrowser>();
            runningPages     = new List <RunningPage>();
            enqueuedPages    = new ConcurrentQueue <Page>();

            for (int i = 0; i < MaxRunningPages; i++)
            {
                availableWorkers.Enqueue(browserFactory.Create());
            }
        }
예제 #11
0
        internal PublicClientApplication(
            IHttpManager httpManager,
            IStorageManager storageManager,
            IBrowserFactory browserFactory,
            IGuidService guidService,
            ITelemetryManager telemetryManager,
            EnvironmentMetadata environmentMetadata,
            MsalClientConfiguration msalClientConfiguration)
        {
            _platformProxy = PlatformProxyFactory.GetPlatformProxy();

            _httpManager             = httpManager ?? new HttpManager(new HttpClientFactory(), msalClientConfiguration);
            _storageManager          = storageManager ?? _platformProxy.CreateStorageManager();
            _browserFactory          = browserFactory ?? _platformProxy.CreateBrowserFactory();
            _guidService             = guidService ?? new GuidService();
            _telemetryManager        = telemetryManager ?? new TelemetryManager(msalClientConfiguration);
            _environmentMetadata     = environmentMetadata ?? new EnvironmentMetadata();
            _msalClientConfiguration = msalClientConfiguration;
        }
 public Task <TResult> ExecuteWithRetry <TResult>(IBrowserFactory browserFactory, Func <IBrowser, Task <TResult> > actions)
 {
     return(Policy
            .Handle <Exception>()
            .RetryAsync(3)
            .ExecuteAsync(async() =>
     {
         try
         {
             using (var browser = browserFactory.GetInstance())
             {
                 return await actions(browser).ConfigureAwait(false);
             }
         }
         catch (Exception ex)
         {
             logger.Error(ex, "Browser actions failed.");
             throw;
         }
     }));
 }
예제 #13
0
 public OpenBrowser(IBrowserFactory factory, IOptions <RpaWebOptions> options)
 {
     _factory = factory;
     _options = options.Value;
 }
 public MainWindow(IBrowserFactory browserFactory)
 {
     _browserFactory = browserFactory;
     InitializeComponent();
 }
예제 #15
0
 /// <summary>
 ///     ctor
 /// </summary>
 public BrowserManager()
 {
     _browsers = new List<IWebDriver>();
     _localBrowserFactory = new LocalBrowserFactory();
     _remoteBrowserFactory = new RemoteBrowserFactory();
 }
예제 #16
0
 public SkyscannerFlightPriceDetection(IBrowserFactory browserFactory, IBrowserActionsRetry browserActionsRetry)
 {
     this.browserFactory      = browserFactory;
     this.browserActionsRetry = browserActionsRetry;
 }
 public AuthenticationOperations(IConfigurations configurations, IBrowserFactory browserFactory)
 {
     this.configurations = configurations;
     this.browserFactory = browserFactory;
 }
예제 #18
0
 /// <summary>
 /// Sets the browser factory to be used with the SDK.
 /// </summary>
 /// <param name="browserFactory">browser factory</param>
 /// <returns>this builder instance</returns>
 public Builder WithBrowserFactory(IBrowserFactory browserFactory)
 {
     this.browserFactory = browserFactory;
     return(this);
 }
예제 #19
0
        private const int DegreeOfParallelism = 1; // todo: move to configuration

        public BrowserPool(
            IBrowserFactory browserFactory
            )
        {
            this.browserFactory = browserFactory;
        }
예제 #20
0
 /// <summary>
 ///     ctor
 /// </summary>
 public BrowserManager()
 {
     _browsers             = new List <IWebDriver>();
     _localBrowserFactory  = new LocalBrowserFactory();
     _remoteBrowserFactory = new RemoteBrowserFactory();
 }
예제 #21
0
 public WebActivity(IServiceProvider sp)
 {
     _factory = sp.GetRequiredService <IBrowserFactory>();
     _options = sp.GetRequiredService <IOptions <RpaWebOptions> >().Value;
 }
예제 #22
0
 public void BeforeAllTests()
 {
     BrowserFactory = new WebDriverFactory(browser, startPage);
 }
예제 #23
0
 public DelayedBrowserFactory(IBrowserFactory wrappedFactory, ILogger logger)
 {
     this.wrappedFactory = wrappedFactory;
     this.logger         = logger.ForContext <DelayedBrowserFactory>();
 }