function DocumentElement::waitFor

Same name and namespace in other branches
  1. 9 core/tests/Drupal/Tests/DocumentElement.php \Drupal\Tests\DocumentElement::waitFor()
  2. 10 core/tests/Drupal/Tests/DocumentElement.php \Drupal\Tests\DocumentElement::waitFor()

File

core/tests/Drupal/Tests/DocumentElement.php, line 94

Class

DocumentElement
Document element.

Namespace

Drupal\Tests

Code

public function waitFor($timeout, $callback) {
    // Wraps waits in a function to catch curl exceptions to continue waiting.
    WebDriverCurlService::disableRetry();
    $count = 0;
    $wrapper = function (Element $element) use ($callback, &$count) {
        $count++;
        try {
            return call_user_func($callback, $element);
        } catch (Exception $e) {
            return NULL;
        }
    };
    $result = parent::waitFor($timeout, $wrapper);
    if (!$result && $count < 2) {
        // If the callback or the system is really slow, then it might have only
        // fired once. In this case it is better to trigger it once more as the
        // page state has probably changed while the callback is running.
        return call_user_func($callback, $this);
    }
    WebDriverCurlService::enableRetry();
    return $result;
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.