Files
bm/public_html/vendor/facebook/webdriver/lib/WebDriverOptions.php
2025-09-24 13:26:28 +02:00

171 lines
4.4 KiB
PHP

<?php
// Copyright 2004-present Facebook. All Rights Reserved.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
namespace Facebook\WebDriver;
use Facebook\WebDriver\Remote\DriverCommand;
use Facebook\WebDriver\Remote\ExecuteMethod;
use InvalidArgumentException;
/**
* Managing stuff you would do in a browser.
*/
class WebDriverOptions
{
/**
* @var ExecuteMethod
*/
protected $executor;
public function __construct(ExecuteMethod $executor)
{
$this->executor = $executor;
}
/**
* Add a specific cookie.
*
* @see Cookie for description of possible cookie properties
* @param Cookie|array $cookie Cookie object. May be also created from array for compatibility reasons.
* @return WebDriverOptions The current instance.
*/
public function addCookie($cookie)
{
if (is_array($cookie)) {
$cookie = Cookie::createFromArray($cookie);
}
if (!$cookie instanceof Cookie) {
throw new InvalidArgumentException('Cookie must be set from instance of Cookie class or from array.');
}
$this->executor->execute(
DriverCommand::ADD_COOKIE,
['cookie' => $cookie->toArray()]
);
return $this;
}
/**
* Delete all the cookies that are currently visible.
*
* @return WebDriverOptions The current instance.
*/
public function deleteAllCookies()
{
$this->executor->execute(DriverCommand::DELETE_ALL_COOKIES);
return $this;
}
/**
* Delete the cookie with the give name.
*
* @param string $name
* @return WebDriverOptions The current instance.
*/
public function deleteCookieNamed($name)
{
$this->executor->execute(
DriverCommand::DELETE_COOKIE,
[':name' => $name]
);
return $this;
}
/**
* Get the cookie with a given name.
*
* @param string $name
* @return Cookie|null The cookie, or null if no cookie with the given name is presented.
*/
public function getCookieNamed($name)
{
$cookies = $this->getCookies();
foreach ($cookies as $cookie) {
if ($cookie['name'] === $name) {
return $cookie;
}
}
return null;
}
/**
* Get all the cookies for the current domain.
*
* @return Cookie[] The array of cookies presented.
*/
public function getCookies()
{
$cookieArrays = $this->executor->execute(DriverCommand::GET_ALL_COOKIES);
$cookies = [];
foreach ($cookieArrays as $cookieArray) {
$cookies[] = Cookie::createFromArray($cookieArray);
}
return $cookies;
}
/**
* Return the interface for managing driver timeouts.
*
* @return WebDriverTimeouts
*/
public function timeouts()
{
return new WebDriverTimeouts($this->executor);
}
/**
* An abstraction allowing the driver to manipulate the browser's window
*
* @return WebDriverWindow
* @see WebDriverWindow
*/
public function window()
{
return new WebDriverWindow($this->executor);
}
/**
* Get the log for a given log type. Log buffer is reset after each request.
*
* @param string $log_type The log type.
* @return array The list of log entries.
* @see https://github.com/SeleniumHQ/selenium/wiki/JsonWireProtocol#log-type
*/
public function getLog($log_type)
{
return $this->executor->execute(
DriverCommand::GET_LOG,
['type' => $log_type]
);
}
/**
* Get available log types.
*
* @return array The list of available log types.
* @see https://github.com/SeleniumHQ/selenium/wiki/JsonWireProtocol#log-type
*/
public function getAvailableLogTypes()
{
return $this->executor->execute(DriverCommand::GET_AVAILABLE_LOG_TYPES);
}
}