1*04fd306cSNickeau<?php 2*04fd306cSNickeau 3*04fd306cSNickeaunamespace Facebook\WebDriver\Chrome; 4*04fd306cSNickeau 5*04fd306cSNickeauuse Facebook\WebDriver\Remote\RemoteWebDriver; 6*04fd306cSNickeau 7*04fd306cSNickeau/** 8*04fd306cSNickeau * Provide access to Chrome DevTools Protocol (CDP) commands via HTTP endpoint of Chromedriver. 9*04fd306cSNickeau * 10*04fd306cSNickeau * @see https://chromedevtools.github.io/devtools-protocol/ 11*04fd306cSNickeau */ 12*04fd306cSNickeauclass ChromeDevToolsDriver 13*04fd306cSNickeau{ 14*04fd306cSNickeau const SEND_COMMAND = [ 15*04fd306cSNickeau 'method' => 'POST', 16*04fd306cSNickeau 'url' => '/session/:sessionId/goog/cdp/execute', 17*04fd306cSNickeau ]; 18*04fd306cSNickeau 19*04fd306cSNickeau /** 20*04fd306cSNickeau * @var RemoteWebDriver 21*04fd306cSNickeau */ 22*04fd306cSNickeau private $driver; 23*04fd306cSNickeau 24*04fd306cSNickeau public function __construct(RemoteWebDriver $driver) 25*04fd306cSNickeau { 26*04fd306cSNickeau $this->driver = $driver; 27*04fd306cSNickeau } 28*04fd306cSNickeau 29*04fd306cSNickeau /** 30*04fd306cSNickeau * Executes a Chrome DevTools command 31*04fd306cSNickeau * 32*04fd306cSNickeau * @param string $command The DevTools command to execute 33*04fd306cSNickeau * @param array $parameters Optional parameters to the command 34*04fd306cSNickeau * @return array The result of the command 35*04fd306cSNickeau */ 36*04fd306cSNickeau public function execute($command, array $parameters = []) 37*04fd306cSNickeau { 38*04fd306cSNickeau $params = ['cmd' => $command, 'params' => (object) $parameters]; 39*04fd306cSNickeau 40*04fd306cSNickeau return $this->driver->executeCustomCommand( 41*04fd306cSNickeau self::SEND_COMMAND['url'], 42*04fd306cSNickeau self::SEND_COMMAND['method'], 43*04fd306cSNickeau $params 44*04fd306cSNickeau ); 45*04fd306cSNickeau } 46*04fd306cSNickeau} 47