@@ -45,44 +45,47 @@ protected function methods()
45
45
/**
46
46
* {@inheritdoc}
47
47
*/
48
- public function session ($ requiredCapabilities = Browser::FIREFOX , $ desiredCapabilities = array () )
48
+ public function session ($ browserName = Browser::FIREFOX , $ desiredCapabilities = null , $ requiredCapabilities = null )
49
49
{
50
- if ($ this ->legacy ) {
51
- // for backwards compatibility when the only required capability was browser name
52
- if (! is_array ($ requiredCapabilities )) {
53
- $ desiredCapabilities [Capability::BROWSER_NAME ] = $ requiredCapabilities ?: Browser::FIREFOX ;
50
+ // default to W3C WebDriver API
51
+ $ firstMatch = $ desiredCapabilities ?: array ();
52
+ $ firstMatch [] = array ('browserName ' => Browser::CHROME );
54
53
55
- $ requiredCapabilities = array ();
56
- }
54
+ if ($ browserName !== Browser::CHROME ) {
55
+ $ firstMatch [] = array ('browserName ' => $ browserName );
56
+ }
57
+
58
+ $ parameters = array ('capabilities ' => array ('firstMatch ' => $ firstMatch ));
57
59
58
- // required
59
- $ parameters = array (
60
- 'desiredCapabilities ' => array_merge ($ desiredCapabilities , $ requiredCapabilities )
60
+ if (is_array ($ requiredCapabilities ) && count ($ requiredCapabilities )) {
61
+ $ parameters ['capabilities ' ]['alwaysMatch ' ] = $ requiredCapabilities ;
62
+ }
63
+
64
+ try {
65
+ $ result = $ this ->curl (
66
+ 'POST ' ,
67
+ '/session ' ,
68
+ $ parameters ,
69
+ array (CURLOPT_FOLLOWLOCATION => true )
61
70
);
71
+ } catch (\Exception $ e ) {
72
+ // fallback to legacy JSON Wire Protocol
73
+ $ capabilities = $ desiredCapabilities ?: array ();
74
+ $ capabilities [Capability::BROWSER_NAME ] = $ browserName ;
75
+
76
+ $ parameters = array ('desiredCapabilities ' => $ capabilities );
62
77
63
- // optional
64
- if (! empty ($ requiredCapabilities )) {
78
+ if (is_array ($ requiredCapabilities ) && count ($ requiredCapabilities )) {
65
79
$ parameters ['requiredCapabilities ' ] = $ requiredCapabilities ;
66
80
}
67
- } else {
68
- if (! is_array ($ requiredCapabilities )) {
69
- $ parameters = array (
70
- 'capabilities ' => array (
71
- 'firstMatch ' => array (
72
- array ('browserName ' => Browser::CHROME ),
73
- array ('browserName ' => Browser::FIREFOX )
74
- )
75
- )
76
- );
77
- }
78
- }
79
81
80
- $ result = $ this ->curl (
81
- 'POST ' ,
82
- '/session ' ,
83
- $ parameters ,
84
- array (CURLOPT_FOLLOWLOCATION => true )
85
- );
82
+ $ result = $ this ->curl (
83
+ 'POST ' ,
84
+ '/session ' ,
85
+ $ parameters ,
86
+ array (CURLOPT_FOLLOWLOCATION => true )
87
+ );
88
+ }
86
89
87
90
$ capabilities = isset ($ result ['value ' ]['capabilities ' ]) ? $ result ['value ' ]['capabilities ' ] : null ;
88
91
$ this ->legacy = ! $ capabilities ;
@@ -94,7 +97,12 @@ public function session($requiredCapabilities = Browser::FIREFOX, $desiredCapabi
94
97
}
95
98
96
99
/**
97
- * {@inheritdoc}
100
+ * Get Sessions: /sessions (GET)
101
+ * Get list of currently active sessions
102
+ *
103
+ * @deprecated
104
+ *
105
+ * @return array an array of \WebDriver\Session objects
98
106
*/
99
107
public function sessions ()
100
108
{
0 commit comments