executor = $executor; $this->driver = $driver; } /** * Switch to the main document if the page contains iframes. Otherwise, switch * to the first frame on the page. * * @return WebDriver The driver focused on the top window or the first frame. */ public function defaultContent() { $params = ['id' => null]; $this->executor->execute(DriverCommand::SWITCH_TO_FRAME, $params); return $this->driver; } /** * Switch to the iframe by its id or name. * * @param WebDriverElement|string $frame The WebDriverElement, * the id or the name of the frame. * @return WebDriver The driver focused on the given frame. */ public function frame($frame) { if ($frame instanceof WebDriverElement) { $id = ['ELEMENT' => $frame->getID()]; } else { $id = (string) $frame; } $params = ['id' => $id]; $this->executor->execute(DriverCommand::SWITCH_TO_FRAME, $params); return $this->driver; } /** * Switch the focus to another window by its handle. * * @param string $handle The handle of the window to be focused on. * @return WebDriver The driver focused on the given window. * @see WebDriver::getWindowHandles */ public function window($handle) { $params = ['name' => (string) $handle]; $this->executor->execute(DriverCommand::SWITCH_TO_WINDOW, $params); return $this->driver; } /** * Switch to the currently active modal dialog for this particular driver * instance. * * @return WebDriverAlert */ public function alert() { return new WebDriverAlert($this->executor); } /** * Switches to the element that currently has focus within the document * currently "switched to", or the body element if this cannot be detected. * * @return RemoteWebElement */ public function activeElement() { $response = $this->driver->execute(DriverCommand::GET_ACTIVE_ELEMENT, []); $method = new RemoteExecuteMethod($this->driver); return new RemoteWebElement($method, $response['ELEMENT']); } }