diff --git a/tests/acceptance/features/core/ElementWrapper.php b/tests/acceptance/features/core/ElementWrapper.php index 816f437097..a5e5a3df0f 100644 --- a/tests/acceptance/features/core/ElementWrapper.php +++ b/tests/acceptance/features/core/ElementWrapper.php @@ -38,6 +38,14 @@ * the element is stale it is found again using the same parameters to find it * in the first place. * + * NoSuchElement exceptions are sometimes thrown instead of + * StaleElementReference exceptions. This can happen when the Selenium2 driver + * for Mink performs an action on an element through the WebDriver session + * instead of directly through the WebDriver element. In that case, if the + * element with the given ID does not exist, a NoSuchElement exception would be + * thrown instead of a StaleElementReference exception, so those cases are + * handled like StaleElementReference exceptions. + * * ElementNotVisible exceptions are thrown when the command requires the element * to be visible but the element is not. Finding an element only guarantees that * (at that time) the element is attached to the DOM, but it does not provide @@ -200,8 +208,8 @@ class ElementWrapper { /** * Executes the given command. * - * If a StaleElementReference exception is thrown the wrapped element is - * found again and, then, the command is executed again. + * If a StaleElementReference or a NoSuchElement exception is thrown the + * wrapped element is found again and, then, the command is executed again. * * @param \Closure $commandCallback the command to execute. * @param string $errorMessage an error message that describes the failed @@ -216,6 +224,8 @@ class ElementWrapper { return $commandCallback(); } catch (\WebDriver\Exception\StaleElementReference $exception) { $this->printFailedCommandMessage($exception, $errorMessage); + } catch (\WebDriver\Exception\NoSuchElement $exception) { + $this->printFailedCommandMessage($exception, $errorMessage); } $this->element = $this->elementFinder->find(); @@ -226,10 +236,10 @@ class ElementWrapper { /** * Executes the given command on a visible element. * - * If a StaleElementReference exception is thrown the wrapped element is - * found again and, then, the command is executed again. If an - * ElementNotVisible or a MoveTargetOutOfBounds exception is thrown it is - * waited for the wrapped element to be visible and, then, the command is + * If a StaleElementReference or a NoSuchElement exception is thrown the + * wrapped element is found again and, then, the command is executed again. + * If an ElementNotVisible or a MoveTargetOutOfBounds exception is thrown it + * is waited for the wrapped element to be visible and, then, the command is * executed again. * * @param \Closure $commandCallback the command to execute.