function WebDriver::session
Overrides WebDriverInterface::session
File
-
vendor/
lullabot/ php-webdriver/ lib/ WebDriver/ WebDriver.php, line 41
Class
- WebDriver
- WebDriver class
Namespace
WebDriverCode
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;
}