Files
appium/packages/base-driver/docs/mjsonwp/errors.md
2021-05-17 14:43:40 -07:00

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 err object is a Mobile JSON Wire Protocol error of a particular type
  • arguments
    • err - the error object to test
    • type - 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 error
    • message - 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