Mercurial > hg > isophonics-drupal-site
view vendor/jcalderonzumba/mink-phantomjs-driver/src/JavascriptTrait.php @ 19:fa3358dc1485 tip
Add ndrum files
author | Chris Cannam |
---|---|
date | Wed, 28 Aug 2019 13:14:47 +0100 |
parents | 7a779792577d |
children |
line wrap: on
line source
<?php namespace Zumba\Mink\Driver; use Behat\Mink\Exception\DriverException; /** * Class JavascriptTrait * @package Zumba\Mink\Driver */ trait JavascriptTrait { /** * Executes a script on the browser * @param string $script */ public function executeScript($script) { $this->browser->execute($this->fixSelfExecutingFunction($script)); } /** * Evaluates a script and returns the result * @param string $script * @return mixed */ public function evaluateScript($script) { $script = preg_replace('/^return\s+/', '', $script); $script = $this->fixSelfExecutingFunction($script); return $this->browser->evaluate($script); } /** * Waits some time or until JS condition turns true. * * @param integer $timeout timeout in milliseconds * @param string $condition JS condition * @return boolean * @throws DriverException When the operation cannot be done */ public function wait($timeout, $condition) { $start = microtime(true); $end = $start + $timeout / 1000.0; do { $result = $this->browser->evaluate($condition); if ($result) { // No need to wait any longer when the condition is met already. return TRUE; } usleep(100000); } while (microtime(true) < $end && !$result); return (bool)$result; } /** * Fixes self-executing functions to allow evaluating them. * * The self-executing function must be wrapped in braces to work. * * @param string $script * * @return string */ private function fixSelfExecutingFunction($script) { if (preg_match('/^function[\s\(]/', $script)) { $script = preg_replace('/;$/', '', $script); $script = '(' . $script . ')'; } return $script; } }