. * */ /** * Helper class with common "wait for" functions. */ class WaitFor { /** * Waits for the element to be visible. * * @param Actor $actor the Actor used to find the element. * @param Locator $elementLocator the locator for the element. * @param float $timeout the number of seconds (decimals allowed) to wait at * most for the element to be visible. * @param float $timeoutStep the number of seconds (decimals allowed) to * wait before checking the visibility again. * @return boolean true if the element is visible before (or exactly when) * the timeout expires, false otherwise. */ public static function elementToBeEventuallyShown(Actor $actor, Locator $elementLocator, $timeout = 10, $timeoutStep = 1) { $elementShownCallback = function() use ($actor, $elementLocator) { try { return $actor->find($elementLocator)->isVisible(); } catch (NoSuchElementException $exception) { return false; } }; return Utils::waitFor($elementShownCallback, $timeout, $timeoutStep); } /** * Waits for the element to be hidden (either not visible or not found in * the DOM). * * @param Actor $actor the Actor used to find the element. * @param Locator $elementLocator the locator for the element. * @param float $timeout the number of seconds (decimals allowed) to wait at * most for the element to be hidden. * @param float $timeoutStep the number of seconds (decimals allowed) to * wait before checking the visibility again. * @return boolean true if the element is hidden before (or exactly when) * the timeout expires, false otherwise. */ public static function elementToBeEventuallyNotShown(Actor $actor, Locator $elementLocator, $timeout = 10, $timeoutStep = 1) { $elementNotShownCallback = function() use ($actor, $elementLocator) { try { return !$actor->find($elementLocator)->isVisible(); } catch (NoSuchElementException $exception) { return true; } }; return Utils::waitFor($elementNotShownCallback, $timeout, $timeoutStep); } }