executor = $executor; $this->driver = $driver; $this->isW3cCompliant = $isW3cCompliant; } /** * Send keys to active element * @param string|array $keys * @return $this */ public function sendKeys($keys) { if ($this->isW3cCompliant) { $activeElement = $this->driver->switchTo()->activeElement(); $activeElement->sendKeys($keys); } else { $this->executor->execute(DriverCommand::SEND_KEYS_TO_ACTIVE_ELEMENT, [ 'value' => WebDriverKeys::encode($keys), ]); } return $this; } /** * Press a modifier key * * @see WebDriverKeys * @param string $key * @return $this */ public function pressKey($key) { if ($this->isW3cCompliant) { $this->executor->execute(DriverCommand::ACTIONS, [ 'actions' => [ [ 'type' => 'key', 'id' => 'keyboard', 'actions' => [['type' => 'keyDown', 'value' => $key]], ], ], ]); } else { $this->executor->execute(DriverCommand::SEND_KEYS_TO_ACTIVE_ELEMENT, [ 'value' => [(string) $key], ]); } return $this; } /** * Release a modifier key * * @see WebDriverKeys * @param string $key * @return $this */ public function releaseKey($key) { if ($this->isW3cCompliant) { $this->executor->execute(DriverCommand::ACTIONS, [ 'actions' => [ [ 'type' => 'key', 'id' => 'keyboard', 'actions' => [['type' => 'keyUp', 'value' => $key]], ], ], ]); } else { $this->executor->execute(DriverCommand::SEND_KEYS_TO_ACTIVE_ELEMENT, [ 'value' => [(string) $key], ]); } return $this; } }