# Copyright 2008-2009 WebDriver committers # Copyright 2008-2009 Google Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. """Exceptions that may happen in all the webdriver code.""" class WebDriverException(Exception): def __init__(self, msg=None, screen=None, stacktrace=None): self.msg = msg self.screen = screen self.stacktrace = stacktrace def __str__(self): exception_msg = "Message: %s " % repr(self.msg) if self.screen is not None: exception_msg = "%s; Screenshot: available via screen " \ % exception_msg if self.stacktrace is not None: exception_msg = "%s; Stacktrace: %s " \ % (exception_msg, str(self.stacktrace)) return exception_msg class ErrorInResponseException(WebDriverException): """An error has occurred on the server side. This may happen when communicating with the firefox extension or the remote driver server.""" def __init__(self, response, msg): WebDriverException.__init__(self, msg) self.response = response class InvalidSwitchToTargetException(WebDriverException): """The frame or window target to be switched doesn't exist.""" pass class NoSuchFrameException(InvalidSwitchToTargetException): pass class NoSuchWindowException(InvalidSwitchToTargetException): pass class NoSuchElementException(WebDriverException): """find_element_by_* can't find the element.""" pass class NoSuchAttributeException(WebDriverException): """find_element_by_* can't find the element.""" pass class StaleElementReferenceException(WebDriverException): """Indicates that a reference to an element is now "stale" --- the element no longer appears on the DOM of the page.""" pass class InvalidElementStateException(WebDriverException): pass class NoAlertPresentException(WebDriverException): pass class ElementNotVisibleException(InvalidElementStateException): """Thrown to indicate that although an element is present on the DOM, it is not visible, and so is not able to be interacted with.""" pass class ElementNotSelectableException(InvalidElementStateException): pass class InvalidCookieDomainException(WebDriverException): """Thrown when attempting to add a cookie under a different domain than the current URL.""" pass class UnableToSetCookieException(WebDriverException): """Thrown when a driver fails to set a cookie.""" pass class RemoteDriverServerException(WebDriverException): pass class TimeoutException(WebDriverException): """Thrown when a command does not complete in enough time.""" pass class MoveTargetOutOfBoundsException(WebDriverException): """Indicates that the target provided to the actions move() method is invalid""" pass class UnexpectedTagNameException(WebDriverException): """Thrown when a support class did not get an expected web element""" pass class InvalidSelectorException(NoSuchElementException): """ Thrown when the selector which is used to find an element does not return a WebElement. Currently this only happens when the selector is an xpath expression is used which is either syntactically invalid (i.e. it is not a xpath expression) or the expression does not select WebElements (e.g. "count(//input)"). """ pass class ImeNotAvailableException(WebDriverException): """ Indicates that IME support is not available. This exception is thrown for every IME-related method call if IME support is not available on the machine. """ pass class ImeActivationFailedException(WebDriverException): """ Indicates that activating an IME engine has failed. """ pass