WebDriver.php 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. <?php
  2. /**
  3. * Copyright 2004-2014 Facebook. All Rights Reserved.
  4. *
  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
  8. *
  9. * http://www.apache.org/licenses/LICENSE-2.0
  10. *
  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.
  16. *
  17. * @package WebDriver
  18. *
  19. * @author Justin Bishop <jubishop@gmail.com>
  20. * @author Anthon Pang <apang@softwaredevelopment.ca>
  21. */
  22. namespace WebDriver;
  23. /**
  24. * WebDriver class
  25. *
  26. * @package WebDriver
  27. *
  28. * @method status
  29. */
  30. final class WebDriver extends AbstractWebDriver
  31. {
  32. /**
  33. * {@inheritdoc}
  34. */
  35. protected function methods()
  36. {
  37. return array(
  38. 'status' => 'GET',
  39. );
  40. }
  41. /**
  42. * New Session: /session (POST)
  43. * Get session object for chaining
  44. *
  45. * @param array|string $requiredCapabilities Required capabilities (or browser name)
  46. * @param array $desiredCapabilities Desired capabilities
  47. *
  48. * @return \WebDriver\Session
  49. */
  50. public function session($requiredCapabilities = Browser::FIREFOX, $desiredCapabilities = array())
  51. {
  52. // for backwards compatibility when the only required capability was browser name
  53. if (! is_array($requiredCapabilities)) {
  54. $desiredCapabilities[Capability::BROWSER_NAME] = $requiredCapabilities ?: Browser::FIREFOX;
  55. $requiredCapabilities = array();
  56. }
  57. // required
  58. $parameters = array(
  59. 'desiredCapabilities' => array_merge($desiredCapabilities, $requiredCapabilities)
  60. );
  61. // optional
  62. if ( ! empty($requiredCapabilities)) {
  63. $parameters['requiredCapabilities'] = $requiredCapabilities;
  64. }
  65. $result = $this->curl(
  66. 'POST',
  67. '/session',
  68. $parameters,
  69. array(CURLOPT_FOLLOWLOCATION => true)
  70. );
  71. return new Session($result['sessionUrl']);
  72. }
  73. /**
  74. * Get list of currently active sessions
  75. *
  76. * @return array an array of \WebDriver\Session objects
  77. */
  78. public function sessions()
  79. {
  80. $result = $this->curl('GET', '/sessions');
  81. $sessions = array();
  82. foreach ($result['value'] as $session) {
  83. $sessions[] = new Session($this->url . '/session/' . $session['id']);
  84. }
  85. return $sessions;
  86. }
  87. }