driver = $driver; } public static function match($browserName) { return !in_array($browserName, self::BROWSERS_WITH_ENDPOINT_SUPPORT, true); } public function execute($params) { $element = new RemoteWebElement( new RemoteExecuteMethod($this->driver), $params[':id'], $this->driver->isW3cCompliant() ); return $this->executeAtom('isElementDisplayed', $element); } protected function executeAtom($atomName, ...$params) { return $this->driver->executeScript( sprintf('%s; return (%s).apply(null, arguments);', $this->loadAtomScript($atomName), $atomName), $params ); } private function loadAtomScript($atomName) { return file_get_contents(__DIR__ . '/../scripts/' . $atomName . '.js'); } }