Chris@14
|
1 <?php
|
Chris@14
|
2 /**
|
Chris@14
|
3 * Copyright 2004-2017 Facebook. All Rights Reserved.
|
Chris@14
|
4 *
|
Chris@14
|
5 * Licensed under the Apache License, Version 2.0 (the "License");
|
Chris@14
|
6 * you may not use this file except in compliance with the License.
|
Chris@14
|
7 * You may obtain a copy of the License at
|
Chris@14
|
8 *
|
Chris@14
|
9 * http://www.apache.org/licenses/LICENSE-2.0
|
Chris@14
|
10 *
|
Chris@14
|
11 * Unless required by applicable law or agreed to in writing, software
|
Chris@14
|
12 * distributed under the License is distributed on an "AS IS" BASIS,
|
Chris@14
|
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
Chris@14
|
14 * See the License for the specific language governing permissions and
|
Chris@14
|
15 * limitations under the License.
|
Chris@14
|
16 *
|
Chris@14
|
17 * @package WebDriver
|
Chris@14
|
18 *
|
Chris@14
|
19 * @author Justin Bishop <jubishop@gmail.com>
|
Chris@14
|
20 * @author Anthon Pang <apang@softwaredevelopment.ca>
|
Chris@14
|
21 */
|
Chris@14
|
22
|
Chris@14
|
23 namespace WebDriver;
|
Chris@14
|
24
|
Chris@14
|
25 /**
|
Chris@14
|
26 * WebDriver class
|
Chris@14
|
27 *
|
Chris@14
|
28 * @package WebDriver
|
Chris@14
|
29 *
|
Chris@14
|
30 * @method status
|
Chris@14
|
31 */
|
Chris@14
|
32 class WebDriver extends AbstractWebDriver implements WebDriverInterface
|
Chris@14
|
33 {
|
Chris@14
|
34 /**
|
Chris@14
|
35 * {@inheritdoc}
|
Chris@14
|
36 */
|
Chris@14
|
37 protected function methods()
|
Chris@14
|
38 {
|
Chris@14
|
39 return array(
|
Chris@14
|
40 'status' => 'GET',
|
Chris@14
|
41 );
|
Chris@14
|
42 }
|
Chris@14
|
43
|
Chris@14
|
44 /**
|
Chris@14
|
45 * {@inheritdoc}
|
Chris@14
|
46 */
|
Chris@14
|
47 public function session($requiredCapabilities = Browser::FIREFOX, $desiredCapabilities = array())
|
Chris@14
|
48 {
|
Chris@14
|
49 // for backwards compatibility when the only required capability was browser name
|
Chris@14
|
50 if (! is_array($requiredCapabilities)) {
|
Chris@14
|
51 $desiredCapabilities[Capability::BROWSER_NAME] = $requiredCapabilities ?: Browser::FIREFOX;
|
Chris@14
|
52
|
Chris@14
|
53 $requiredCapabilities = array();
|
Chris@14
|
54 }
|
Chris@14
|
55
|
Chris@14
|
56 // required
|
Chris@14
|
57 $parameters = array(
|
Chris@14
|
58 'desiredCapabilities' => array_merge($desiredCapabilities, $requiredCapabilities)
|
Chris@14
|
59 );
|
Chris@14
|
60
|
Chris@14
|
61 // optional
|
Chris@14
|
62 if (! empty($requiredCapabilities)) {
|
Chris@14
|
63 $parameters['requiredCapabilities'] = $requiredCapabilities;
|
Chris@14
|
64 }
|
Chris@14
|
65
|
Chris@14
|
66 $result = $this->curl(
|
Chris@14
|
67 'POST',
|
Chris@14
|
68 '/session',
|
Chris@14
|
69 $parameters,
|
Chris@14
|
70 array(CURLOPT_FOLLOWLOCATION => true)
|
Chris@14
|
71 );
|
Chris@14
|
72
|
Chris@14
|
73 return new Session($result['sessionUrl']);
|
Chris@14
|
74 }
|
Chris@14
|
75
|
Chris@14
|
76 /**
|
Chris@14
|
77 * {@inheritdoc}
|
Chris@14
|
78 */
|
Chris@14
|
79 public function sessions()
|
Chris@14
|
80 {
|
Chris@14
|
81 $result = $this->curl('GET', '/sessions');
|
Chris@14
|
82 $sessions = array();
|
Chris@14
|
83
|
Chris@14
|
84 foreach ($result['value'] as $session) {
|
Chris@14
|
85 $sessions[] = new Session($this->url . '/session/' . $session['id']);
|
Chris@14
|
86 }
|
Chris@14
|
87
|
Chris@14
|
88 return $sessions;
|
Chris@14
|
89 }
|
Chris@14
|
90 }
|