/** * Construct the RemoteWebDriver by a desired capabilities. * * @param string $url The url of the remote server * @param DesiredCapabilities|array $desired_capabilities The desired capabilities * @param int|null $connection_timeout_in_ms * @param int|null $request_timeout_in_ms * @param string|null $http_proxy The proxy to tunnel requests through * @param int|null $http_proxy_port * @return RemoteWebDriver */ public static function create($url = 'http://localhost:4444/wd/hub', $desired_capabilities = null, $connection_timeout_in_ms = null, $request_timeout_in_ms = null, $http_proxy = null, $http_proxy_port = null) { $url = preg_replace('#/+$#', '', $url); // Passing DesiredCapabilities as $desired_capabilities is encouraged but // array is also accepted for legacy reason. if ($desired_capabilities instanceof DesiredCapabilities) { $desired_capabilities = $desired_capabilities->toArray(); } $executor = new HttpCommandExecutor($url, $http_proxy, $http_proxy_port); if ($connection_timeout_in_ms !== null) { $executor->setConnectionTimeout($connection_timeout_in_ms); } if ($request_timeout_in_ms !== null) { $executor->setRequestTimeout($request_timeout_in_ms); } $command = new WebDriverCommand(null, DriverCommand::NEW_SESSION, array('desiredCapabilities' => $desired_capabilities)); $response = $executor->execute($command); $driver = new static(); $driver->setSessionID($response->getSessionID())->setCommandExecutor($executor); return $driver; }