fromExistingSession function
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);
}