You are here

DriverInterface.php in Zircon Profile 8

Same filename and directory in other branches
  1. 8.0 vendor/behat/mink/src/Driver/DriverInterface.php

Namespace

Behat\Mink\Driver

File

vendor/behat/mink/src/Driver/DriverInterface.php
View source
<?php

/*
 * This file is part of the Mink package.
 * (c) Konstantin Kudryashov <ever.zet@gmail.com>
 *
 * For the full copyright and license information, please view the LICENSE
 * file that was distributed with this source code.
 */
namespace Behat\Mink\Driver;

use Behat\Mink\Element\NodeElement;
use Behat\Mink\Exception\DriverException;
use Behat\Mink\Exception\UnsupportedDriverActionException;
use Behat\Mink\Session;

/**
 * Driver interface.
 *
 * @author Konstantin Kudryashov <ever.zet@gmail.com>
 */
interface DriverInterface {

  /**
   * Sets driver's current session.
   *
   * @param Session $session
   */
  public function setSession(Session $session);

  /**
   * Starts driver.
   *
   * Once started, the driver should be ready to visit a page.
   *
   * Calling any action before visiting a page is an undefined behavior.
   * The only supported method calls on a fresh driver are
   * - visit()
   * - setRequestHeader()
   * - setBasicAuth()
   * - reset()
   * - stop()
   *
   * Calling start on a started driver is an undefined behavior. Driver
   * implementations are free to handle it silently or to fail with an
   * exception.
   *
   * @throws DriverException When the driver cannot be started
   */
  public function start();

  /**
   * Checks whether driver is started.
   *
   * @return Boolean
   */
  public function isStarted();

  /**
   * Stops driver.
   *
   * Once stopped, the driver should be started again before using it again.
   *
   * Calling any action on a stopped driver is an undefined behavior.
   * The only supported method call after stopping a driver is starting it again.
   *
   * Calling stop on a stopped driver is an undefined behavior. Driver
   * implementations are free to handle it silently or to fail with an
   * exception.
   *
   * @throws DriverException When the driver cannot be closed
   */
  public function stop();

  /**
   * Resets driver state.
   *
   * This should reset cookies, request headers and basic authentication.
   * When possible, the history should be reset as well, but this is not enforced
   * as some implementations may not be able to reset it without restarting the
   * driver entirely. Consumers requiring a clean history should restart the driver
   * to enforce it.
   *
   * Once reset, the driver should be ready to visit a page.
   * Calling any action before visiting a page is an undefined behavior.
   * The only supported method calls on a fresh driver are
   * - visit()
   * - setRequestHeader()
   * - setBasicAuth()
   * - reset()
   * - stop()
   *
   * Calling reset on a stopped driver is an undefined behavior.
   */
  public function reset();

  /**
   * Visit specified URL.
   *
   * @param string $url url of the page
   *
   * @throws UnsupportedDriverActionException When operation not supported by the driver
   * @throws DriverException                  When the operation cannot be done
   */
  public function visit($url);

  /**
   * Returns current URL address.
   *
   * @return string
   *
   * @throws UnsupportedDriverActionException When operation not supported by the driver
   * @throws DriverException                  When the operation cannot be done
   */
  public function getCurrentUrl();

  /**
   * Reloads current page.
   *
   * @throws UnsupportedDriverActionException When operation not supported by the driver
   * @throws DriverException                  When the operation cannot be done
   */
  public function reload();

  /**
   * Moves browser forward 1 page.
   *
   * @throws UnsupportedDriverActionException When operation not supported by the driver
   * @throws DriverException                  When the operation cannot be done
   */
  public function forward();

  /**
   * Moves browser backward 1 page.
   *
   * @throws UnsupportedDriverActionException When operation not supported by the driver
   * @throws DriverException                  When the operation cannot be done
   */
  public function back();

  /**
   * Sets HTTP Basic authentication parameters.
   *
   * @param string|Boolean $user     user name or false to disable authentication
   * @param string         $password password
   *
   * @throws UnsupportedDriverActionException When operation not supported by the driver
   * @throws DriverException                  When the operation cannot be done
   */
  public function setBasicAuth($user, $password);

  /**
   * Switches to specific browser window.
   *
   * @param string $name window name (null for switching back to main window)
   *
   * @throws UnsupportedDriverActionException When operation not supported by the driver
   * @throws DriverException                  When the operation cannot be done
   */
  public function switchToWindow($name = null);

  /**
   * Switches to specific iFrame.
   *
   * @param string $name iframe name (null for switching back)
   *
   * @throws UnsupportedDriverActionException When operation not supported by the driver
   * @throws DriverException                  When the operation cannot be done
   */
  public function switchToIFrame($name = null);

  /**
   * Sets specific request header on client.
   *
   * @param string $name
   * @param string $value
   *
   * @throws UnsupportedDriverActionException When operation not supported by the driver
   * @throws DriverException                  When the operation cannot be done
   */
  public function setRequestHeader($name, $value);

  /**
   * Returns last response headers.
   *
   * @return array
   *
   * @throws UnsupportedDriverActionException When operation not supported by the driver
   * @throws DriverException                  When the operation cannot be done
   */
  public function getResponseHeaders();

  /**
   * Sets cookie.
   *
   * @param string $name
   * @param string $value
   *
   * @throws UnsupportedDriverActionException When operation not supported by the driver
   * @throws DriverException                  When the operation cannot be done
   */
  public function setCookie($name, $value = null);

  /**
   * Returns cookie by name.
   *
   * @param string $name
   *
   * @return string|null
   *
   * @throws UnsupportedDriverActionException When operation not supported by the driver
   * @throws DriverException                  When the operation cannot be done
   */
  public function getCookie($name);

  /**
   * Returns last response status code.
   *
   * @return int
   *
   * @throws UnsupportedDriverActionException When operation not supported by the driver
   * @throws DriverException                  When the operation cannot be done
   */
  public function getStatusCode();

  /**
   * Returns last response content.
   *
   * @return string
   *
   * @throws UnsupportedDriverActionException When operation not supported by the driver
   * @throws DriverException                  When the operation cannot be done
   */
  public function getContent();

  /**
   * Capture a screenshot of the current window.
   *
   * @return string screenshot of MIME type image/* depending
   *                on driver (e.g., image/png, image/jpeg)
   *
   * @throws UnsupportedDriverActionException When operation not supported by the driver
   * @throws DriverException                  When the operation cannot be done
   */
  public function getScreenshot();

  /**
   * Return the names of all open windows.
   *
   * @return array array of all open windows
   *
   * @throws UnsupportedDriverActionException When operation not supported by the driver
   * @throws DriverException                  When the operation cannot be done
   */
  public function getWindowNames();

  /**
   * Return the name of the currently active window.
   *
   * @return string the name of the current window
   *
   * @throws UnsupportedDriverActionException When operation not supported by the driver
   * @throws DriverException                  When the operation cannot be done
   */
  public function getWindowName();

  /**
   * Finds elements with specified XPath query.
   *
   * @param string $xpath
   *
   * @return NodeElement[]
   *
   * @throws UnsupportedDriverActionException When operation not supported by the driver
   * @throws DriverException                  When the operation cannot be done
   */
  public function find($xpath);

  /**
   * Returns element's tag name by it's XPath query.
   *
   * @param string $xpath
   *
   * @return string
   *
   * @throws UnsupportedDriverActionException When operation not supported by the driver
   * @throws DriverException                  When the operation cannot be done
   */
  public function getTagName($xpath);

  /**
   * Returns element's text by it's XPath query.
   *
   * @param string $xpath
   *
   * @return string
   *
   * @throws UnsupportedDriverActionException When operation not supported by the driver
   * @throws DriverException                  When the operation cannot be done
   */
  public function getText($xpath);

  /**
   * Returns element's inner html by it's XPath query.
   *
   * @param string $xpath
   *
   * @return string
   *
   * @throws UnsupportedDriverActionException When operation not supported by the driver
   * @throws DriverException                  When the operation cannot be done
   */
  public function getHtml($xpath);

  /**
   * Returns element's outer html by it's XPath query.
   *
   * @param string $xpath
   *
   * @return string
   *
   * @throws UnsupportedDriverActionException When operation not supported by the driver
   * @throws DriverException                  When the operation cannot be done
   */
  public function getOuterHtml($xpath);

  /**
   * Returns element's attribute by it's XPath query.
   *
   * @param string $xpath
   * @param string $name
   *
   * @return string|null
   *
   * @throws UnsupportedDriverActionException When operation not supported by the driver
   * @throws DriverException                  When the operation cannot be done
   */
  public function getAttribute($xpath, $name);

  /**
   * Returns element's value by it's XPath query.
   *
   * @param string $xpath
   *
   * @return string|bool|array
   *
   * @throws UnsupportedDriverActionException When operation not supported by the driver
   * @throws DriverException                  When the operation cannot be done
   *
   * @see \Behat\Mink\Element\NodeElement::getValue
   */
  public function getValue($xpath);

  /**
   * Sets element's value by it's XPath query.
   *
   * @param string            $xpath
   * @param string|bool|array $value
   *
   * @throws UnsupportedDriverActionException When operation not supported by the driver
   * @throws DriverException                  When the operation cannot be done
   *
   * @see \Behat\Mink\Element\NodeElement::setValue
   */
  public function setValue($xpath, $value);

  /**
   * Checks checkbox by it's XPath query.
   *
   * @param string $xpath
   *
   * @throws UnsupportedDriverActionException When operation not supported by the driver
   * @throws DriverException                  When the operation cannot be done
   *
   * @see \Behat\Mink\Element\NodeElement::check
   */
  public function check($xpath);

  /**
   * Unchecks checkbox by it's XPath query.
   *
   * @param string $xpath
   *
   * @throws UnsupportedDriverActionException When operation not supported by the driver
   * @throws DriverException                  When the operation cannot be done
   *
   * @see \Behat\Mink\Element\NodeElement::uncheck
   */
  public function uncheck($xpath);

  /**
   * Checks whether checkbox or radio button located by it's XPath query is checked.
   *
   * @param string $xpath
   *
   * @return Boolean
   *
   * @throws UnsupportedDriverActionException When operation not supported by the driver
   * @throws DriverException                  When the operation cannot be done
   *
   * @see \Behat\Mink\Element\NodeElement::isChecked
   */
  public function isChecked($xpath);

  /**
   * Selects option from select field or value in radio group located by it's XPath query.
   *
   * @param string  $xpath
   * @param string  $value
   * @param Boolean $multiple
   *
   * @throws UnsupportedDriverActionException When operation not supported by the driver
   * @throws DriverException                  When the operation cannot be done
   *
   * @see \Behat\Mink\Element\NodeElement::selectOption
   */
  public function selectOption($xpath, $value, $multiple = false);

  /**
   * Checks whether select option, located by it's XPath query, is selected.
   *
   * @param string $xpath
   *
   * @return Boolean
   *
   * @throws UnsupportedDriverActionException When operation not supported by the driver
   * @throws DriverException                  When the operation cannot be done
   *
   * @see \Behat\Mink\Element\NodeElement::isSelected
   */
  public function isSelected($xpath);

  /**
   * Clicks button or link located by it's XPath query.
   *
   * @param string $xpath
   *
   * @throws UnsupportedDriverActionException When operation not supported by the driver
   * @throws DriverException                  When the operation cannot be done
   */
  public function click($xpath);

  /**
   * Double-clicks button or link located by it's XPath query.
   *
   * @param string $xpath
   *
   * @throws UnsupportedDriverActionException When operation not supported by the driver
   * @throws DriverException                  When the operation cannot be done
   */
  public function doubleClick($xpath);

  /**
   * Right-clicks button or link located by it's XPath query.
   *
   * @param string $xpath
   *
   * @throws UnsupportedDriverActionException When operation not supported by the driver
   * @throws DriverException                  When the operation cannot be done
   */
  public function rightClick($xpath);

  /**
   * Attaches file path to file field located by it's XPath query.
   *
   * @param string $xpath
   * @param string $path
   *
   * @throws UnsupportedDriverActionException When operation not supported by the driver
   * @throws DriverException                  When the operation cannot be done
   *
   * @see \Behat\Mink\Element\NodeElement::attachFile
   */
  public function attachFile($xpath, $path);

  /**
   * Checks whether element visible located by it's XPath query.
   *
   * @param string $xpath
   *
   * @return Boolean
   *
   * @throws UnsupportedDriverActionException When operation not supported by the driver
   * @throws DriverException                  When the operation cannot be done
   */
  public function isVisible($xpath);

  /**
   * Simulates a mouse over on the element.
   *
   * @param string $xpath
   *
   * @throws UnsupportedDriverActionException When operation not supported by the driver
   * @throws DriverException                  When the operation cannot be done
   */
  public function mouseOver($xpath);

  /**
   * Brings focus to element.
   *
   * @param string $xpath
   *
   * @throws UnsupportedDriverActionException When operation not supported by the driver
   * @throws DriverException                  When the operation cannot be done
   */
  public function focus($xpath);

  /**
   * Removes focus from element.
   *
   * @param string $xpath
   *
   * @throws UnsupportedDriverActionException When operation not supported by the driver
   * @throws DriverException                  When the operation cannot be done
   */
  public function blur($xpath);

  /**
   * Presses specific keyboard key.
   *
   * @param string     $xpath
   * @param string|int $char     could be either char ('b') or char-code (98)
   * @param string     $modifier keyboard modifier (could be 'ctrl', 'alt', 'shift' or 'meta')
   *
   * @throws UnsupportedDriverActionException When operation not supported by the driver
   * @throws DriverException                  When the operation cannot be done
   */
  public function keyPress($xpath, $char, $modifier = null);

  /**
   * Pressed down specific keyboard key.
   *
   * @param string     $xpath
   * @param string|int $char     could be either char ('b') or char-code (98)
   * @param string     $modifier keyboard modifier (could be 'ctrl', 'alt', 'shift' or 'meta')
   *
   * @throws UnsupportedDriverActionException When operation not supported by the driver
   * @throws DriverException                  When the operation cannot be done
   */
  public function keyDown($xpath, $char, $modifier = null);

  /**
   * Pressed up specific keyboard key.
   *
   * @param string     $xpath
   * @param string|int $char     could be either char ('b') or char-code (98)
   * @param string     $modifier keyboard modifier (could be 'ctrl', 'alt', 'shift' or 'meta')
   *
   * @throws UnsupportedDriverActionException When operation not supported by the driver
   * @throws DriverException                  When the operation cannot be done
   */
  public function keyUp($xpath, $char, $modifier = null);

  /**
   * Drag one element onto another.
   *
   * @param string $sourceXpath
   * @param string $destinationXpath
   *
   * @throws UnsupportedDriverActionException When operation not supported by the driver
   * @throws DriverException                  When the operation cannot be done
   */
  public function dragTo($sourceXpath, $destinationXpath);

  /**
   * Executes JS script.
   *
   * @param string $script
   *
   * @throws UnsupportedDriverActionException When operation not supported by the driver
   * @throws DriverException                  When the operation cannot be done
   */
  public function executeScript($script);

  /**
   * Evaluates JS script.
   *
   * The "return" keyword is optional in the script passed as argument. Driver implementations
   * must accept the expression both with and without the keyword.
   *
   * @param string $script
   *
   * @return mixed
   *
   * @throws UnsupportedDriverActionException When operation not supported by the driver
   * @throws DriverException                  When the operation cannot be done
   */
  public function evaluateScript($script);

  /**
   * Waits some time or until JS condition turns true.
   *
   * @param int    $timeout   timeout in milliseconds
   * @param string $condition JS condition
   *
   * @return bool
   *
   * @throws UnsupportedDriverActionException When operation not supported by the driver
   * @throws DriverException                  When the operation cannot be done
   */
  public function wait($timeout, $condition);

  /**
   * Set the dimensions of the window.
   *
   * @param int    $width  set the window width, measured in pixels
   * @param int    $height set the window height, measured in pixels
   * @param string $name   window name (null for the main window)
   *
   * @throws UnsupportedDriverActionException When operation not supported by the driver
   * @throws DriverException                  When the operation cannot be done
   */
  public function resizeWindow($width, $height, $name = null);

  /**
   * Maximizes the window if it is not maximized already.
   *
   * @param string $name window name (null for the main window)
   *
   * @throws UnsupportedDriverActionException When operation not supported by the driver
   * @throws DriverException                  When the operation cannot be done
   */
  public function maximizeWindow($name = null);

  /**
   * Submits the form.
   *
   * @param string $xpath Xpath.
   *
   * @throws UnsupportedDriverActionException When operation not supported by the driver
   * @throws DriverException                  When the operation cannot be done
   *
   * @see \Behat\Mink\Element\NodeElement::submitForm
   */
  public function submitForm($xpath);

}

Interfaces

Namesort descending Description
DriverInterface Driver interface.