| 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]; |
| } |
| } |