fromExistingSession function

Future<AppiumWebDriver> fromExistingSession(
  1. AsyncRequestClient createRequestClient(
    1. Uri prefix
    ),
  2. String sessionId, {
  3. Uri? uri,
  4. WebDriverSpec spec = WebDriverSpec.Auto,
  5. Map<String, dynamic>? capabilities,
})

Creates an async WebDriver from an existing session.

Uses capabilities when supplied, otherwise the session information.

This is intended for internal use! Please use fromExistingSession from async_io.dart.

Implementation

Future<AppiumWebDriver> fromExistingSession(
    AsyncRequestClient Function(Uri prefix) createRequestClient,
    String sessionId,
    {Uri? uri,
    WebDriverSpec spec = WebDriverSpec.Auto,
    Map<String, dynamic>? capabilities}) async {
  uri ??= defaultUri;

  final handler = getHandler(spec);
  final client = createRequestClient(uri);
  final SessionInfo session;
  try {
    session = await client.send(handler.session.buildInfoRequest(sessionId),
        handler.session.parseInfoResponse);
  } finally {
    client.close();
  }

  if (session.spec != WebDriverSpec.JsonWire &&
      session.spec != WebDriverSpec.W3c) {
    throw 'Unexpected spec: ${session.spec}';
  }

  final sessionCapabilities = capabilities ?? session.capabilities!;
  var newUri = updateUriWithDirectConnect(uri, sessionCapabilities);

  return AppiumWebDriver(
      newUri,
      sessionId,
      UnmodifiableMapView(sessionCapabilities),
      createRequestClient(newUri.resolve('session/$sessionId/')),
      session.spec);
}