![]() Server : Apache System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64 User : corals ( 1002) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/corals/old/vendor/php-webdriver/webdriver/lib/Chrome/ |
<?php namespace Facebook\WebDriver\Chrome; use Facebook\WebDriver\Remote\DesiredCapabilities; use JsonSerializable; use ReturnTypeWillChange; /** * The class manages the capabilities in ChromeDriver. * * @see https://sites.google.com/a/chromium.org/chromedriver/capabilities */ class ChromeOptions implements JsonSerializable { /** * The key of chromeOptions in desired capabilities (in legacy OSS JsonWire protocol) * @todo Replace value with 'goog:chromeOptions' after JsonWire protocol support is removed */ const CAPABILITY = 'chromeOptions'; /** * The key of chromeOptions in desired capabilities (in W3C compatible protocol) */ const CAPABILITY_W3C = 'goog:chromeOptions'; /** * @var array */ private $arguments = []; /** * @var string */ private $binary = ''; /** * @var array */ private $extensions = []; /** * @var array */ private $experimentalOptions = []; /** * Return a version of the class which can JSON serialized. * * @return array */ #[ReturnTypeWillChange] public function jsonSerialize() { return $this->toArray(); } /** * Sets the path of the Chrome executable. The path should be either absolute * or relative to the location running ChromeDriver server. * * @param string $path * @return ChromeOptions */ public function setBinary($path) { $this->binary = $path; return $this; } /** * @param array $arguments * @return ChromeOptions */ public function addArguments(array $arguments) { $this->arguments = array_merge($this->arguments, $arguments); return $this; } /** * Add a Chrome extension to install on browser startup. Each path should be * a packed Chrome extension. * * @param array $paths * @return ChromeOptions */ public function addExtensions(array $paths) { foreach ($paths as $path) { $this->addExtension($path); } return $this; } /** * @param array $encoded_extensions An array of base64 encoded of the extensions. * @return ChromeOptions */ public function addEncodedExtensions(array $encoded_extensions) { foreach ($encoded_extensions as $encoded_extension) { $this->addEncodedExtension($encoded_extension); } return $this; } /** * Sets an experimental option which has not exposed officially. * * When using "prefs" to set Chrome preferences, please be aware they are so far not supported by * Chrome running in headless mode, see https://bugs.chromium.org/p/chromium/issues/detail?id=775911 * * @param string $name * @param mixed $value * @return ChromeOptions */ public function setExperimentalOption($name, $value) { $this->experimentalOptions[$name] = $value; return $this; } /** * @return DesiredCapabilities The DesiredCapabilities for Chrome with this options. */ public function toCapabilities() { $capabilities = DesiredCapabilities::chrome(); $capabilities->setCapability(self::CAPABILITY, $this); return $capabilities; } /** * @return \ArrayObject|array */ public function toArray() { // The selenium server expects a 'dictionary' instead of a 'list' when // reading the chrome option. However, an empty array in PHP will be // converted to a 'list' instead of a 'dictionary'. To fix it, we work // with `ArrayObject` $options = new \ArrayObject($this->experimentalOptions); if (!empty($this->binary)) { $options['binary'] = $this->binary; } if (!empty($this->arguments)) { $options['args'] = $this->arguments; } if (!empty($this->extensions)) { $options['extensions'] = $this->extensions; } return $options; } /** * Add a Chrome extension to install on browser startup. Each path should be a * packed Chrome extension. * * @param string $path * @return ChromeOptions */ private function addExtension($path) { $this->addEncodedExtension(base64_encode(file_get_contents($path))); return $this; } /** * @param string $encoded_extension Base64 encoded of the extension. * @return ChromeOptions */ private function addEncodedExtension($encoded_extension) { $this->extensions[] = $encoded_extension; return $this; } }