createDriver function

Future<AppiumWebDriver> createDriver(
  1. AsyncRequestClient createRequestClient(
    1. Uri prefix
    ), {
  2. Uri? uri,
  3. required Map<String, dynamic> desired,
  4. WebDriverSpec spec = WebDriverSpec.Auto,
})

Creates a new async WebDriver.

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

Implementation

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

  final handler = getHandler(spec);
  // This temporary client is only used to create the session.
  final client = createRequestClient(uri);
  final SessionInfo session;
  try {
    session = await client.send(
        handler.session.buildCreateRequest(desired: addAppiumPrefix(desired)),
        handler.session.parseCreateResponse);
  } finally {
    client.close();
  }

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

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

  return AppiumWebDriver(
      newUri,
      session.id,
      UnmodifiableMapView(session.capabilities!),
      createRequestClient(newUri.resolve('session/${session.id}/')),
      session.spec);
}