/**
  * Set default sleep delay for WaitUntil
  * @param int $sleepDelay the new default sleep delay
  */
 public static function setDefaultWaitUntilSleepInterval($sleepDelay)
 {
     $sleepDelay = (int) $sleepDelay;
     self::$defaultWaitUntilSleepInterval = $sleepDelay > 0 ? $sleepDelay : 0;
 }
예제 #2
0
 /**
  * @param $callback Callback to run until it returns not null or timeout occurs
  * @param null|int $timeout
  * @param null|int $sleepInterval the delay between 2 iterations of the callback
  * @return mixed
  * @throws PHPUnit_Extensions_Selenium2TestCase_Exception
  * @throws PHPUnit_Extensions_Selenium2TestCase_WebDriverException
  */
 public function run($callback, $timeout = NULL, $sleepInterval = NULL)
 {
     if (!is_callable($callback)) {
         throw new PHPUnit_Extensions_Selenium2TestCase_Exception('The valid callback is expected');
     }
     // if there was an implicit timeout specified - remember it and temporarily turn it off
     $implicitWait = $this->_testCase->timeouts()->getLastImplicitWaitValue();
     if ($implicitWait) {
         $this->_testCase->timeouts()->implicitWait(0);
     }
     if (is_null($sleepInterval)) {
         $sleepInterval = PHPUnit_Extensions_Selenium2TestCase::defaultWaitUntilSleepInterval();
     }
     $sleepInterval *= 1000;
     if (is_null($timeout)) {
         $timeout = PHPUnit_Extensions_Selenium2TestCase::defaultWaitUntilTimeout();
     }
     $timeout /= 1000;
     $endTime = microtime(TRUE) + $timeout;
     $lastException = NULL;
     while (TRUE) {
         try {
             $result = call_user_func($callback, $this->_testCase);
             if (!is_null($result)) {
                 if ($implicitWait) {
                     $this->_testCase->timeouts()->implicitWait($implicitWait);
                 }
                 return $result;
             }
         } catch (Exception $e) {
             $lastException = $e;
         }
         if (microtime(TRUE) > $endTime) {
             if ($implicitWait) {
                 $this->_testCase->timeouts()->implicitWait($implicitWait);
             }
             $message = "Timed out after {$timeout} second" . ($timeout != 1 ? 's' : '');
             throw new PHPUnit_Extensions_Selenium2TestCase_WebDriverException($message, PHPUnit_Extensions_Selenium2TestCase_WebDriverException::Timeout, $lastException);
         }
         usleep($sleepInterval);
     }
 }
 public function testWaitUntilDefaultSleepInterval()
 {
     $this->assertEquals(500, PHPUnit_Extensions_Selenium2TestCase::defaultWaitUntilSleepInterval());
     PHPUnit_Extensions_Selenium2TestCase::setDefaultWaitUntilSleepInterval(100);
     $this->assertEquals(100, PHPUnit_Extensions_Selenium2TestCase::defaultWaitUntilSleepInterval());
 }