/** * Gets a list of available windows in current session * @return Array */ public function getWindowHandles() { $command = new Commands\Command($this, 'window_handles'); $results = $command->execute(); return $results['value']; }
/** * @return string The response body * @throws \Exception */ public function execute(Commands\Command $command, $trace = false) { if ($command->getUrl() == "" || $command->getHttpMethod() == "") { throw new \Exception("Must specify URL and HTTP METHOD"); } $curl = curl_init($command->getUrl()); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true); curl_setopt($curl, CURLOPT_HTTPHEADER, array('Content-Type: application/json;charset=UTF-8', 'Accept: application/json')); if ($command->getHttpMethod() == HttpClient::POST) { curl_setopt($curl, CURLOPT_POST, true); if ($command->getParams() && is_array($command->getParams())) { curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($command->getParams())); } else { curl_setopt($curl, CURLOPT_HTTPHEADER, array('Content-Length: 0')); } } else { if ($command->getHttpMethod() == HttpClient::DELETE) { curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'DELETE'); } else { if ($command->getHttpMethod() == HttpClient::GET) { /*NO ACTION NECESSARY*/ } } } $rawResponse = trim(curl_exec($curl)); $responseBody = json_decode($rawResponse, true); $responseHeaders = curl_getinfo($curl); if ($this->_traceAll || $trace) { echo "\n***********************************************************************\n"; echo "URL: " . $command->getUrl() . "\n"; echo "METHOD: " . $command->getHttpMethod() . "\n"; echo "PARAMETERS: "; if (is_array($command->getParams())) { echo print_r($command->getParams()); } else { echo "NONE"; } echo "\n"; echo "RESULTS:" . print_r($responseBody); echo "\n"; echo "CURL INFO: "; echo print_r($responseHeaders); echo "\n***********************************************************************\n"; } curl_close($curl); $response = array("headers" => $responseHeaders, "body" => $responseBody); return $response; }