Skip to main content
Drupal API
User account menu
  • Log in

Breadcrumb

  1. Drupal Core 11.1.x
  2. WebDriver.php

class WebDriver

WebDriver class

@package WebDriver

@method array status() Returns information about whether a remote end is in a state in which it can create new sessions.

Hierarchy

  • class \WebDriver\AbstractWebDriver
    • class \WebDriver\WebDriver extends \WebDriver\AbstractWebDriver implements \WebDriver\WebDriverInterface

Expanded class hierarchy of WebDriver

1 file declares its use of WebDriver
Selenium2Driver.php in vendor/lullabot/mink-selenium2-driver/src/Selenium2Driver.php

File

vendor/lullabot/php-webdriver/lib/WebDriver/WebDriver.php, line 21

Namespace

WebDriver
View source
class WebDriver extends AbstractWebDriver implements WebDriverInterface {
    
    /**
     * @var array
     */
    private $capabilities;
    
    /**
     * {@inheritdoc}
     */
    protected function methods() {
        return array(
            'status' => 'GET',
        );
    }
    
    /**
     * {@inheritdoc}
     */
    public function session($browserName = Browser::FIREFOX, $desiredCapabilities = array(), $requiredCapabilities = array()) {
        // Filter capabilities.
        $filterCapabilites = function ($key) {
            // See https://github.com/jlipps/simple-wd-spec#capabilities
            if (str_contains($key, ':')) {
                return true;
            }
            return in_array($key, [
                'browserName',
                'browserVersion',
                'platformName',
                'acceptInsecureCerts',
                'pageLoadStrategy',
                'proxy',
                'setWindowRect',
                'timeouts',
                'timeouts',
            ]);
        };
        $w3c_mode = true;
        if (isset($desiredCapabilities['w3c']) && $desiredCapabilities['w3c'] === false || isset($desiredCapabilities['goog:chromeOptions']['w3c']) && $desiredCapabilities['goog:chromeOptions']['w3c'] === false) {
            $w3c_mode = false;
        }
        if ($w3c_mode) {
            $requiredCapabilities = array_filter($requiredCapabilities, $filterCapabilites, ARRAY_FILTER_USE_KEY);
            $desiredCapabilities = array_filter($desiredCapabilities, $filterCapabilites, ARRAY_FILTER_USE_KEY);
        }
        $firstMatch = $desiredCapabilities ?: array();
        $firstMatch['browserName'] = $browserName;
        $parameters = array(
            'capabilities' => array(
                'firstMatch' => [
                    $firstMatch,
                ],
            ),
        );
        if (is_array($requiredCapabilities) && count($requiredCapabilities)) {
            $parameters['capabilities']['alwaysMatch'] = $requiredCapabilities;
        }
        if (!$w3c_mode) {
            // fallback to legacy JSON Wire Protocol
            $capabilities = $desiredCapabilities ?: array();
            $capabilities[Capability::BROWSER_NAME] = $browserName;
            $parameters = array(
                'desiredCapabilities' => $capabilities,
            );
            if (is_array($requiredCapabilities) && count($requiredCapabilities)) {
                $parameters['requiredCapabilities'] = $requiredCapabilities;
            }
        }
        $result = $this->curl('POST', '/session', $parameters, array(
            CURLOPT_FOLLOWLOCATION => true,
        ));
        $this->capabilities = isset($result['value']['capabilities']) ? $result['value']['capabilities'] : null;
        $session = new Session($result['sessionUrl'], $this->capabilities);
        return $session;
    }
    
    /**
     * Get Sessions: /sessions (GET)
     * Get list of currently active sessions
     *
     * @deprecated
     *
     * @return array an array of \WebDriver\Session objects
     */
    public function sessions() {
        $result = $this->curl('GET', '/sessions');
        $sessions = array();
        foreach ($result['value'] as $session) {
            $session = new Session($this->url . '/session/' . $session['id'], $this->capabilities);
            $sessions[] = $session;
        }
        return $sessions;
    }

}

Members

Title Sort descending Modifiers Object type Summary Overriden Title Overrides
AbstractWebDriver::$curlService private property Curl service
AbstractWebDriver::$transientOptions private property Transient options
AbstractWebDriver::$url protected property URL
AbstractWebDriver::assertSerializable private function Sanity check
AbstractWebDriver::curl protected function Curl request to webdriver server.
AbstractWebDriver::getCurlService public function Get curl service
AbstractWebDriver::getRequestMethod private function Get default HTTP request method for a given WebDriver command
AbstractWebDriver::getTransientOptions public function
AbstractWebDriver::getURL public function Returns URL to Selenium server
AbstractWebDriver::obsoleteMethods protected function Return array of obsolete method names and corresponding HTTP request methods 4
AbstractWebDriver::offsetGet private function Extract value from result
AbstractWebDriver::setCurlService public function Set curl service
AbstractWebDriver::setTransientOptions public function Set transient options
AbstractWebDriver::__call public function Magic method that maps calls to class methods to execute WebDriver commands 1
AbstractWebDriver::__construct public function Constructor 3
AbstractWebDriver::__toString public function Magic method which returns URL to Selenium server
WebDriver::$capabilities private property
WebDriver::methods protected function Return array of supported method names and corresponding HTTP request methods Overrides AbstractWebDriver::methods
WebDriver::session public function New Session: /session (POST)
Get session object for chaining
Overrides WebDriverInterface::session
WebDriver::sessions public function Get Sessions: /sessions (GET)
Get list of currently active sessions

API Navigation

  • Drupal Core 11.1.x
  • Topics
  • Classes
  • Functions
  • Constants
  • Globals
  • Files
  • Namespaces
  • Deprecated
  • Services
RSS feed
Powered by Drupal