/// <inheritdoc cref="IBrowserType"/> public override async Task <IBrowser> LaunchAsync(LaunchOptions options = null) { var app = await LaunchBrowserAppAsync(options).ConfigureAwait(false); var connectOptions = app.ConnectOptions; return(await ChromiumBrowser.ConnectAsync(app, connectOptions).ConfigureAwait(false)); }
/// <inheritdoc cref="IBrowserType"/> public async Task <IBrowser> LaunchAsync(LaunchOptions options = null) { var app = await LaunchBrowserAppAsync(options).ConfigureAwait(false); var connectOptions = app.ConnectOptions; connectOptions.EnqueueTransportMessages = options?.EnqueueTransportMessages ?? false; return(await ChromiumBrowser.ConnectAsync(app, connectOptions).ConfigureAwait(false)); }
internal ChromiumBrowserContext( ChromiumSession client, ChromiumBrowser chromiumBrowser, string contextId, BrowserContextOptions options) { _client = client; _browser = chromiumBrowser; _contextId = contextId; Options = options; }
public ChromiumPage(ChromiumSession client, ChromiumBrowser browser, IBrowserContext browserContext) { Client = client; _browser = browser; _browserContext = browserContext; _networkManager = new ChromiumNetworkManager(Client, this); RawKeyboard = new ChromiumRawKeyboard(client); RawMouse = new ChromiumRawMouse(client); Page = new Page(this, browserContext); client.MessageReceived += Client_MessageReceived; }
internal static async Task <IBrowser> ConnectAsync(IBrowserApp app, ConnectOptions options) { var transport = await BrowserHelper.CreateTransportAsync(options).ConfigureAwait(false); var connection = new ChromiumConnection(transport); var response = await connection.RootSession.SendAsync(new TargetGetBrowserContextsRequest()).ConfigureAwait(false); var browser = new ChromiumBrowser(app, connection, response.BrowserContextIds); await connection.RootSession.SendAsync(new TargetSetDiscoverTargetsRequest { Discover = true }).ConfigureAwait(false); await browser.WaitForTargetAsync(t => t.Type == TargetType.Page).ConfigureAwait(false); return(browser); }
internal ChromiumTarget( TargetInfo targetInfo, ChromiumBrowser browser, Func <Task <ChromiumSession> > sessionFactory, IBrowserContext browserContext) { TargetInfo = targetInfo; _browser = browser; _sessionFactory = sessionFactory; BrowserContext = browserContext; PageTask = null; _ = _initializedTaskWrapper.Task.ContinueWith( async initializedTask => { bool success = initializedTask.Result; if (!success) { return; } var openerPageTask = Opener?.PageTask; if (openerPageTask == null || Type != TargetType.Page) { return; } var openerPage = await openerPageTask.ConfigureAwait(false); if (!openerPage.HasPopupEventListeners) { return; } var popupPage = await PageAsync().ConfigureAwait(false); openerPage.OnPopup(popupPage); }, CancellationToken.None, TaskContinuationOptions.RunContinuationsAsynchronously, TaskScheduler.Default); CloseTaskWrapper = new TaskCompletionSource <bool>(TaskCreationOptions.RunContinuationsAsynchronously); IsInitialized = Type != TargetType.Page || !string.IsNullOrEmpty(TargetInfo.Url); if (IsInitialized) { _initializedTaskWrapper.TrySetResult(true); } }
/// <inheritdoc cref="IBrowserType"/> public async Task <IBrowser> ConnectAsync(ConnectOptions options = null) { options = options == null ? new ConnectOptions() : options.Clone(); if (!string.IsNullOrEmpty(options.BrowserURL)) { if (!string.IsNullOrEmpty(options.BrowserWSEndpoint) && options.TransportFactory != null) { throw new ArgumentException("Exactly one of BrowserWSEndpoint or TransportFactory must be passed to connect"); } options.BrowserWSEndpoint = await GetWSEndpointAsync(options.BrowserURL).ConfigureAwait(false); } return(await ChromiumBrowser.ConnectAsync(options).ConfigureAwait(false)); }
internal ChromiumBrowserContext(ChromiumSession client, ChromiumBrowser chromiumBrowser) : this(client, chromiumBrowser, null, null) { }