public Connection( ILoggerFactory loggerFactory, TransportTaskScheduler scheduler, string driversLocationPath = null, string driverExecutablePath = null, string browsersPath = null) { if (!string.IsNullOrEmpty(driverExecutablePath) && !string.IsNullOrEmpty(driversLocationPath)) { throw new ArgumentException("Passing a driver executable path and a driver location path is not allowed"); } if (!string.IsNullOrEmpty(browsersPath)) { Environment.SetEnvironmentVariable(BrowsersPathEnvironmentVariable, Path.GetFullPath(browsersPath)); } _loggerFactory = loggerFactory; _logger = _loggerFactory?.CreateLogger <Connection>(); var debugLogger = _loggerFactory?.CreateLogger <Playwright>(); _rootObject = new ChannelOwnerBase(null, this, string.Empty); _playwrightServerProcess = GetProcess(driversLocationPath, driverExecutablePath); _playwrightServerProcess.StartInfo.Arguments = "--run"; _playwrightServerProcess.Start(); _playwrightServerProcess.Exited += (sender, e) => Close("Process exited"); _transport = new StdIOTransport(_playwrightServerProcess, scheduler); _transport.MessageReceived += Transport_MessageReceived; _transport.LogReceived += (s, e) => debugLogger?.LogInformation(e.Message); _transport.TransportClosed += (sender, e) => Close(e.CloseReason); }
public SlowMoTransport(IConnectionTransport transport, int delay) { _delay = delay; _delegate = transport; _delegate.MessageReceived += Delegate_MessageReceived; _delegate.Closed += Delegate_Closed; }
public FirefoxConnection(IConnectionTransport transport) { _transport = transport; _transport.MessageReceived += Transport_MessageReceived; _transport.Closed += Transport_Closed; _asyncSessions = new AsyncDictionaryHelper <string, FirefoxSession>(_sessions, "Session {0} not found"); }
public ChromiumConnection(IConnectionTransport transport) { _transport = transport; _transport.MessageReceived += Transport_MessageReceived; _transport.Closed += Transport_Closed; RootSession = new ChromiumSession(this, TargetType.Browser, string.Empty); _sessions.TryAdd(string.Empty, RootSession); _asyncSessions = new AsyncDictionaryHelper <string, ChromiumSession>(_sessions, "Session {0} not found"); }
public PlaywrightConnection(ILoggerFactory loggerFactory, TransportTaskScheduler scheduler) { _rootScript = CreateScope(string.Empty); _playwrightServerProcess = GetProcess(); _playwrightServerProcess.Start(); _transport = new StdIOTransport(_playwrightServerProcess, scheduler); _transport.MessageReceived += TransportOnMessageReceived; _loggerFactory = loggerFactory; }
internal Connection(string url, int delay, IConnectionTransport transport) { Url = url; Delay = delay; Transport = transport; Transport.MessageReceived += Transport_MessageReceived; Transport.Closed += Transport_Closed; _callbacks = new ConcurrentDictionary <int, MessageTask>(); _sessions = new ConcurrentDictionary <string, CDPSession>(); _asyncSessions = new AsyncDictionaryHelper <string, CDPSession>(_sessions, "Session {0} not found"); }
internal Connection(string url, int delay, IConnectionTransport transport, ILoggerFactory loggerFactory = null) { LoggerFactory = loggerFactory ?? new LoggerFactory(); Url = url; Delay = delay; Transport = transport; _logger = LoggerFactory.CreateLogger <Connection>(); Transport.MessageReceived += Transport_MessageReceived; Transport.Closed += Transport_Closed; _callbacks = new ConcurrentDictionary <int, MessageTask>(); _sessions = new ConcurrentDictionary <string, CDPSession>(); }
internal Connection(string url, int delay, bool enqueueAsyncMessages, IConnectionTransport transport, ILoggerFactory loggerFactory = null) { LoggerFactory = loggerFactory ?? new LoggerFactory(); Url = url; Delay = delay; Transport = transport; _logger = LoggerFactory.CreateLogger <Connection>(); Transport.MessageReceived += Transport_MessageReceived; Transport.Closed += Transport_Closed; _callbacks = new ConcurrentDictionary <int, MessageTask>(); _sessions = new ConcurrentDictionary <string, CDPSession>(); MessageQueue = new AsyncMessageQueue(enqueueAsyncMessages, _logger); _asyncSessions = new AsyncDictionaryHelper <string, CDPSession>(_sessions, "Session {0} not found"); }
public static async Task <IConnectionTransport> CreateTransportAsync(ConnectOptions options) { if (!string.IsNullOrEmpty(options.BrowserWSEndpoint) && options.TransportFactory != null) { throw new ArgumentException("Exactly one of BrowserWSEndpoint or TransportFactory must be passed to connect"); } IConnectionTransport transport = null; if (options.TransportFactory != null) { transport = await options.TransportFactory(new Uri(options.BrowserWSEndpoint), options).ConfigureAwait(false); } else if (!string.IsNullOrEmpty(options.BrowserWSEndpoint)) { #pragma warning disable CA2000 // Call dispose, this is a false alarm. transport = await WebSocketTransport.CreateAsync(options).ConfigureAwait(false); #pragma warning restore CA2000 } return(SlowMoTransport.Wrap(transport, options.SlowMo)); }
internal static IConnectionTransport Wrap(IConnectionTransport transport, int delay) => delay > 0 ? new SlowMoTransport(transport, delay) : transport;
public Connection(IConnectionTransport transport) { transport.MessageReceived += TransportOnMessageReceived; }