updated-packages
This commit is contained in:
133
vendor/php-webdriver/webdriver/lib/Firefox/FirefoxOptions.php
vendored
Normal file
133
vendor/php-webdriver/webdriver/lib/Firefox/FirefoxOptions.php
vendored
Normal file
@@ -0,0 +1,133 @@
|
||||
<?php
|
||||
|
||||
namespace Facebook\WebDriver\Firefox;
|
||||
|
||||
use ReturnTypeWillChange;
|
||||
|
||||
/**
|
||||
* Class to manage Firefox-specific capabilities
|
||||
*
|
||||
* @see https://developer.mozilla.org/en-US/docs/Web/WebDriver/Capabilities/firefoxOptions
|
||||
*/
|
||||
class FirefoxOptions implements \JsonSerializable
|
||||
{
|
||||
/** @var string The key of FirefoxOptions in desired capabilities */
|
||||
const CAPABILITY = 'moz:firefoxOptions';
|
||||
/** @var string */
|
||||
const OPTION_ARGS = 'args';
|
||||
/** @var string */
|
||||
const OPTION_PREFS = 'prefs';
|
||||
/** @var string */
|
||||
const OPTION_PROFILE = 'profile';
|
||||
|
||||
/** @var array */
|
||||
private $options = [];
|
||||
/** @var array */
|
||||
private $arguments = [];
|
||||
/** @var array */
|
||||
private $preferences = [];
|
||||
/** @var FirefoxProfile */
|
||||
private $profile;
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
// Set default preferences:
|
||||
// disable the "Reader View" help tooltip, which can hide elements in the window.document
|
||||
$this->setPreference(FirefoxPreferences::READER_PARSE_ON_LOAD_ENABLED, false);
|
||||
// disable JSON viewer and let JSON be rendered as raw data
|
||||
$this->setPreference(FirefoxPreferences::DEVTOOLS_JSONVIEW, false);
|
||||
}
|
||||
|
||||
/**
|
||||
* Directly set firefoxOptions.
|
||||
* Use `addArguments` to add command line arguments and `setPreference` to set Firefox about:config entry.
|
||||
*
|
||||
* @param string $name
|
||||
* @param mixed $value
|
||||
* @return self
|
||||
*/
|
||||
public function setOption($name, $value)
|
||||
{
|
||||
if ($name === self::OPTION_PREFS) {
|
||||
throw new \InvalidArgumentException('Use setPreference() method to set Firefox preferences');
|
||||
}
|
||||
if ($name === self::OPTION_ARGS) {
|
||||
throw new \InvalidArgumentException('Use addArguments() method to add Firefox arguments');
|
||||
}
|
||||
if ($name === self::OPTION_PROFILE) {
|
||||
throw new \InvalidArgumentException('Use setProfile() method to set Firefox profile');
|
||||
}
|
||||
|
||||
$this->options[$name] = $value;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Command line arguments to pass to the Firefox binary.
|
||||
* These must include the leading dash (-) where required, e.g. ['-headless'].
|
||||
*
|
||||
* @see https://developer.mozilla.org/en-US/docs/Web/WebDriver/Capabilities/firefoxOptions#args
|
||||
* @param string[] $arguments
|
||||
* @return self
|
||||
*/
|
||||
public function addArguments(array $arguments)
|
||||
{
|
||||
$this->arguments = array_merge($this->arguments, $arguments);
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set Firefox preference (about:config entry).
|
||||
*
|
||||
* @see http://kb.mozillazine.org/About:config_entries
|
||||
* @see https://developer.mozilla.org/en-US/docs/Web/WebDriver/Capabilities/firefoxOptions#prefs
|
||||
* @param string $name
|
||||
* @param string|bool|int $value
|
||||
* @return self
|
||||
*/
|
||||
public function setPreference($name, $value)
|
||||
{
|
||||
$this->preferences[$name] = $value;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* @see https://github.com/php-webdriver/php-webdriver/wiki/Firefox#firefox-profile
|
||||
* @param FirefoxProfile $profile
|
||||
* @return self
|
||||
*/
|
||||
public function setProfile(FirefoxProfile $profile)
|
||||
{
|
||||
$this->profile = $profile;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return array
|
||||
*/
|
||||
public function toArray()
|
||||
{
|
||||
$array = $this->options;
|
||||
if (!empty($this->arguments)) {
|
||||
$array[self::OPTION_ARGS] = $this->arguments;
|
||||
}
|
||||
if (!empty($this->preferences)) {
|
||||
$array[self::OPTION_PREFS] = $this->preferences;
|
||||
}
|
||||
if (!empty($this->profile)) {
|
||||
$array[self::OPTION_PROFILE] = $this->profile->encode();
|
||||
}
|
||||
|
||||
return $array;
|
||||
}
|
||||
|
||||
#[ReturnTypeWillChange]
|
||||
public function jsonSerialize()
|
||||
{
|
||||
return new \ArrayObject($this->toArray());
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user