blob: d35add581ef093c82eeea34230534ad4f9f9d6f2 [file] [log] [blame]
import '../../common/by.dart';
import '../../common/request.dart';
import '../../common/webdriver_handler.dart';
import 'utils.dart';
class JsonWireElementFinder extends ElementFinder {
/// Converts [By] instances into JSON params.
Map<String, String> _byToJson(By by) =>
{'using': by.using, 'value': by.value};
@override
WebDriverRequest buildFindElementsRequest(By by, [String? contextElementId]) {
var uri = contextElementId == null
? 'elements'
: 'element/$contextElementId/elements';
return WebDriverRequest.postRequest(uri, _byToJson(by));
}
@override
List<String> parseFindElementsResponse(WebDriverResponse response) =>
(parseJsonWireResponse(response) as List)
.map((e) => e[jsonWireElementStr])
.toList()
.cast<String>();
@override
WebDriverRequest buildFindElementRequest(By by, [String? contextElementId]) {
var uri = contextElementId == null
? 'element'
: 'element/$contextElementId/element';
return WebDriverRequest.postRequest(uri, _byToJson(by));
}
@override
String? parseFindActiveElementResponse(WebDriverResponse response) =>
(parseJsonWireResponse(response) as Map)[jsonWireElementStr] as String?;
@override
WebDriverRequest buildFindActiveElementRequest() =>
WebDriverRequest.getRequest('element/active');
@override
String parseFindElementResponse(WebDriverResponse response) =>
(parseJsonWireResponse(response) ?? {})[jsonWireElementStr] as String;
}