blob: 9d84e217ffe0570fec42f04be17567545a24d90d [file] [log] [blame]
import 'dart:math';
import 'package:webdriver/src/common/request.dart';
import 'package:webdriver/src/common/webdriver_handler.dart';
import 'utils.dart';
class W3cElementHandler extends ElementHandler {
@override
WebDriverRequest buildClickRequest(String elementId) {
return WebDriverRequest.postRequest('${elementPrefix(elementId)}click');
}
@override
void parseClickResponse(WebDriverResponse response) {
parseW3cResponse(response);
}
@override
WebDriverRequest buildSendKeysRequest(String elementId, String keysToSend) {
return WebDriverRequest.postRequest('${elementPrefix(elementId)}value', {
'text': keysToSend, // What geckodriver really wants.
'value': keysToSend // Actual W3C spec.
});
}
@override
void parseSendKeysResponse(WebDriverResponse response) {
parseW3cResponse(response);
}
@override
WebDriverRequest buildClearRequest(String elementId) {
return WebDriverRequest.postRequest('${elementPrefix(elementId)}clear');
}
@override
void parseClearResponse(WebDriverResponse response) {
parseW3cResponse(response);
}
@override
WebDriverRequest buildSelectedRequest(String elementId) {
return WebDriverRequest.getRequest('${elementPrefix(elementId)}selected');
}
@override
bool parseSelectedResponse(WebDriverResponse response) {
return parseW3cResponse(response);
}
@override
WebDriverRequest buildEnabledRequest(String elementId) {
return WebDriverRequest.getRequest('${elementPrefix(elementId)}enabled');
}
@override
bool parseEnabledResponse(WebDriverResponse response) {
return parseW3cResponse(response);
}
@override
WebDriverRequest buildDisplayedRequest(String elementId) {
return WebDriverRequest.getRequest('${elementPrefix(elementId)}displayed');
}
@override
bool parseDisplayedResponse(WebDriverResponse response) {
return parseW3cResponse(response);
}
@override
WebDriverRequest buildLocationRequest(String elementId) {
return _buildRectRequest(elementId);
}
@override
Point<int> parseLocationResponse(WebDriverResponse response) {
return _parseRectResponse(response).topLeft;
}
@override
WebDriverRequest buildSizeRequest(String elementId) {
return _buildRectRequest(elementId);
}
@override
Rectangle<int> parseSizeResponse(WebDriverResponse response) {
final rect = _parseRectResponse(response);
return Rectangle(0, 0, rect.width, rect.height);
}
WebDriverRequest _buildRectRequest(String elementId) {
return WebDriverRequest.getRequest('${elementPrefix(elementId)}rect');
}
Rectangle<int> _parseRectResponse(WebDriverResponse response) {
final rect = parseW3cResponse(response);
return Rectangle(rect['x'].toInt(), rect['y'].toInt(),
rect['width'].toInt(), rect['height'].toInt());
}
@override
WebDriverRequest buildNameRequest(String elementId) {
return WebDriverRequest.getRequest('${elementPrefix(elementId)}name');
}
@override
String parseNameResponse(WebDriverResponse response) {
return parseW3cResponse(response);
}
@override
WebDriverRequest buildTextRequest(String elementId) {
return WebDriverRequest.getRequest('${elementPrefix(elementId)}text');
}
@override
String parseTextResponse(WebDriverResponse response) {
return parseW3cResponse(response);
}
@override
WebDriverRequest buildAttributeRequest(String elementId, String name) {
return WebDriverRequest.getRequest(
'${elementPrefix(elementId)}attribute/$name');
}
@override
String? parseAttributeResponse(WebDriverResponse response) {
return parseW3cResponse(response)?.toString();
}
@override
@deprecated
WebDriverRequest buildSeleniumAttributeRequest(
String elementId, String name) {
return WebDriverRequest.getRequest(
'${elementPrefix(elementId)}attribute/$name');
}
@override
@deprecated
String? parseSeleniumAttributeResponse(WebDriverResponse response) {
return parseW3cResponse(response)?.toString();
}
@override
WebDriverRequest buildCssPropertyRequest(String elementId, String name) {
return WebDriverRequest.getRequest('${elementPrefix(elementId)}css/$name');
}
@override
String? parseCssPropertyResponse(WebDriverResponse response) {
return parseW3cResponse(response)?.toString();
}
@override
WebDriverRequest buildPropertyRequest(String elementId, String name) {
return WebDriverRequest.getRequest(
'${elementPrefix(elementId)}property/$name');
}
@override
String? parsePropertyResponse(WebDriverResponse response) {
return parseW3cResponse(response)?.toString();
}
}