blob: c340dff3eabf2b2fced3a2481a165c96c69e65f4 [file] [log] [blame]
import 'package:webdriver/src/common/by.dart';
import 'package:webdriver/src/common/request.dart';
import 'package:webdriver/src/common/webdriver_handler.dart';
import 'package:webdriver/src/handler/json_wire/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]) {
String uri = contextElementId == null
? 'elements'
: 'element/$contextElementId/elements';
return WebDriverRequest.postRequest(uri, _byToJson(by));
}
@override
List<String> parseFindElementsResponse(WebDriverResponse response) {
return parseJsonWireResponse(response)
.map((e) => e[jsonWireElementStr])
.toList()
.cast<String>();
}
@override
WebDriverRequest buildFindElementRequest(By by, [String? contextElementId]) {
String uri = contextElementId == null
? 'element'
: 'element/$contextElementId/element';
return WebDriverRequest.postRequest(uri, _byToJson(by));
}
@override
String? parseFindActiveElementResponse(WebDriverResponse response) {
return parseJsonWireResponse(response)[jsonWireElementStr];
}
@override
WebDriverRequest buildFindActiveElementRequest() {
return WebDriverRequest.getRequest('element/active');
}
@override
String parseFindElementResponse(WebDriverResponse response) {
return (parseJsonWireResponse(response) ?? {})[jsonWireElementStr];
}
}