/**
  * 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;
 }