3 * Copyright 2004-2017 Facebook. All Rights Reserved.
5 * Licensed under the Apache License, Version 2.0 (the "License");
6 * you may not use this file except in compliance with the License.
7 * You may obtain a copy of the License at
9 * http://www.apache.org/licenses/LICENSE-2.0
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
19 * @author Justin Bishop <jubishop@gmail.com>
20 * @author Anthon Pang <apang@softwaredevelopment.ca>
32 class WebDriver extends AbstractWebDriver implements WebDriverInterface
37 protected function methods()
47 public function session($requiredCapabilities = Browser::FIREFOX, $desiredCapabilities = array())
49 // for backwards compatibility when the only required capability was browser name
50 if (! is_array($requiredCapabilities)) {
51 $desiredCapabilities[Capability::BROWSER_NAME] = $requiredCapabilities ?: Browser::FIREFOX;
53 $requiredCapabilities = array();
58 'desiredCapabilities' => array_merge($desiredCapabilities, $requiredCapabilities)
62 if (! empty($requiredCapabilities)) {
63 $parameters['requiredCapabilities'] = $requiredCapabilities;
66 $result = $this->curl(
70 array(CURLOPT_FOLLOWLOCATION => true)
73 return new Session($result['sessionUrl']);
79 public function sessions()
81 $result = $this->curl('GET', '/sessions');
84 foreach ($result['value'] as $session) {
85 $sessions[] = new Session($this->url . '/session/' . $session['id']);