frame method
Changes focus to another frame on the page.
If frame
is a:
int: select by its zero-based index
WebElement
: select the frame for a previously found frame or iframe
element.
String: same as above, but only CSS id is provided. Note that this
is not element id or frame id.
not provided: selects the first frame on the page or the main document.
Throws NoSuchFrameException if the specified frame can't be found.
Implementation
Future<void> frame([/* int | WebElement | String */ frame]) async {
if (frame == null || frame is int) {
await _client.send(_handler.frame.buildSwitchByIdRequest(frame),
_handler.frame.parseSwitchByIdResponse);
} else if (frame is AppiumWebDriver) {
await _client.send(_handler.frame.buildSwitchByElementRequest(frame.id),
_handler.frame.parseSwitchByElementResponse);
} else if (frame is String) {
final frameId = (await _driver.findElement(AppiumBy.id(frame))).id;
await _client.send(_handler.frame.buildSwitchByElementRequest(frameId),
_handler.frame.parseSwitchByElementResponse);
} else {
throw 'Unsupported frame "$frame" with type ${frame.runtimeType}';
}
}