5.3 KiB
Mobile JSON Wire Protocol Errors
This package exports a number of classes and methods related to Selenium error handling. There are error classes for each Selenium error type (see here, as well as the context errors in the mobile spec).
These classes, which are constructed with a string message (defaulting to the "Details" below), are available through the errors object exported by the module. They are
| Code | Class Name | Details |
|---|---|---|
MJSONWPError1 |
Base class for other errors | |
| 6 | NoSuchDriverError |
A session is either terminated or not started |
| 7 | NoSuchElementError |
An element could not be located on the page using the given search parameters |
| 8 | NoSuchFrameError |
A request to switch to a frame could not be satisfied because the frame could not be found |
| 9 | UnknownCommandError |
The requested resource could not be found, or a request was received using an HTTP method that is not supported by the mapped resource |
| 10 | StaleElementReferenceError |
An element command failed because the referenced element is no longer attached to the DOM |
| 11 | ElementNotVisibleError |
An element command could not be completed because the element is not visible on the page |
| 12 | InvalidElementStateError |
An element command could not be completed because the element is in an invalid state (e.g., attempting to click a disabled element) |
| 13 | UnknownError |
An unknown server-side error occurred while processing the command |
| 405 | NotYetImplementedError |
The operation requested is not yet implemented by the driver |
| 405 | NotImplementedError |
The operation requested will not be implemented by the driver |
| 15 | ElementIsNotSelectableError |
An attempt was made to select an element that cannot be selected |
| 17 | JavaScriptError |
An error occurred while executing user supplied JavaScript |
| 19 | XPathLookupError |
An error occurred while searching for an element by XPath |
| 21 | TimeoutError |
An operation did not complete before its timeout expired |
| 23 | NoSuchWindowError |
A request to switch to a different window could not be satisfied because the window could not be found |
| 24 | InvalidCookieDomainError |
An illegal attempt was made to set a cookie under a different domain than the current page |
| 25 | UnableToSetCookieError |
A request to set a cookie's value could not be satisfied |
| 26 | UnexpectedAlertOpenError |
A modal dialog was open, blocking this operation |
| 27 | NoAlertOpenError |
An attempt was made to operate on a modal dialog when one was not open |
| 28 | ScriptTimeoutError |
A script did not complete before its timeout expired |
| 29 | InvalidElementCoordinatesError |
The coordinates provided to an interactions operation are invalid |
| 30 | IMENotAvailableError |
Input Method Editor was not available |
| 31 | IMEEngineActivationFailedError |
An Input Method Editor engine could not be started |
| 32 | InvalidSelectorError |
Argument was an invalid selector (e.g., XPath/CSS) |
| 33 | SessionNotCreatedError |
A new session could not be created |
| 34 | MoveTargetOutOfBoundsError |
Target provided for a move action is out of bounds |
| 35 | NoSuchContextError |
Context provided (e.g., WEBVIEW_42) does not exist |
| 36 | InvalidContextError |
The operation could not be performed in the current context |
BadParametersError2 |
The parameters specified for the operation are incorrect |
1 MJSONWPError is the base class for all errors that are part of the Selenium specification (i.e., all errors except BadParametersError), and not itself part of that specification.
2 BadParametersError is not part of the Selenium specification, but deals with request management.
There are, in addition, two helper methods for dealing with errors
isErrorType (err, type)
- checks if the
errobject is a Mobile JSON Wire Protocol error of a particular type - arguments
err- the error object to testtype- the error class to test against
- usage
import { errors, isErrorType } from 'appium-base-driver'; try { // do some stuff... } catch (err) { if (isErrorType(err, errors.InvalidCookieDomainError)) { // process... } }
errorFromCode (code, message)
- retrieve the appropriate error for an error code, with the supplied message.
- arguments
code- the integer error code for a Mobile JSON Wire Protocol errormessage- the message to be encapsulated in the error
- usage
import { errors, errorFromCode } from 'appium-base-driver'; let error = errorFromCode(6, 'an error has occurred'); console.log(error instanceof errors.NoSuchDriverError); // => true console.log(error.message === 'an error has occurred'); // => true