webdriver-0.12.0.0: a Haskell client for the Selenium WebDriver protocol
Safe HaskellSafe-Inferred
LanguageHaskell2010

Test.WebDriver

Description

This module serves as the top-level interface to the Haskell WebDriver bindings, providing most of the functionality you're likely to want.

Synopsis

WebDriver monad

newtype WD a Source #

A state monad for WebDriver commands.

Constructors

WD (StateT WDSession IO a) 

Instances

Instances details
MonadFix WD Source # 
Instance details

Defined in Test.WebDriver.Monad

Methods

mfix :: (a -> WD a) -> WD a #

MonadIO WD Source # 
Instance details

Defined in Test.WebDriver.Monad

Methods

liftIO :: IO a -> WD a #

Applicative WD Source # 
Instance details

Defined in Test.WebDriver.Monad

Methods

pure :: a -> WD a #

(<*>) :: WD (a -> b) -> WD a -> WD b #

liftA2 :: (a -> b -> c) -> WD a -> WD b -> WD c #

(*>) :: WD a -> WD b -> WD b #

(<*) :: WD a -> WD b -> WD a #

Functor WD Source # 
Instance details

Defined in Test.WebDriver.Monad

Methods

fmap :: (a -> b) -> WD a -> WD b #

(<$) :: a -> WD b -> WD a #

Monad WD Source # 
Instance details

Defined in Test.WebDriver.Monad

Methods

(>>=) :: WD a -> (a -> WD b) -> WD b #

(>>) :: WD a -> WD b -> WD b #

return :: a -> WD a #

MonadCatch WD Source # 
Instance details

Defined in Test.WebDriver.Monad

Methods

catch :: Exception e => WD a -> (e -> WD a) -> WD a #

MonadMask WD Source # 
Instance details

Defined in Test.WebDriver.Monad

Methods

mask :: ((forall a. WD a -> WD a) -> WD b) -> WD b #

uninterruptibleMask :: ((forall a. WD a -> WD a) -> WD b) -> WD b #

generalBracket :: WD a -> (a -> ExitCase b -> WD c) -> (a -> WD b) -> WD (b, c) #

MonadThrow WD Source # 
Instance details

Defined in Test.WebDriver.Monad

Methods

throwM :: Exception e => e -> WD a #

WebDriver WD Source # 
Instance details

Defined in Test.WebDriver.Monad

Methods

doCommand :: (HasCallStack, ToJSON a, FromJSON b) => Method -> Text -> a -> WD b Source #

WDSessionState WD Source # 
Instance details

Defined in Test.WebDriver.Monad

MonadBaseControl IO WD Source # 
Instance details

Defined in Test.WebDriver.Monad

Associated Types

type StM WD a #

Methods

liftBaseWith :: (RunInBase WD IO -> IO a) -> WD a #

restoreM :: StM WD a -> WD a #

MonadBase IO WD Source # 
Instance details

Defined in Test.WebDriver.Monad

Methods

liftBase :: IO α -> WD α #

type StM WD a Source # 
Instance details

Defined in Test.WebDriver.Monad

type StM WD a = StM (StateT WDSession IO) a

Running WebDriver commands

runSession :: WebDriverConfig conf => conf -> WD a -> IO a Source #

Executes a WD computation within the IO monad, automatically creating a new session beforehand.

NOTE: session is not automatically closed when complete. If you want this behavior, use finallyClose. Example:

   runSessionThenClose action = runSession myConfig . finallyClose $ action

withSession :: WDSessionStateControl m => WDSession -> m a -> m a Source #

Locally sets a session state for use within the given action. The state of any outside action is unaffected by this function. This function is useful if you need to work with multiple sessions simultaneously.

runWD :: WDSession -> WD a -> IO a Source #

Executes a WD computation within the IO monad, using the given WDSession as state for WebDriver requests.

WebDriver configuration

data WDConfig Source #

WebDriver session configuration

Constructors

WDConfig 

Fields

Instances

Instances details
Default WDConfig Source # 
Instance details

Defined in Test.WebDriver.Config

Methods

def :: WDConfig #

GetCapabilities WDConfig Source # 
Instance details

Defined in Test.WebDriver.Config

SetCapabilities WDConfig Source # 
Instance details

Defined in Test.WebDriver.Config

WebDriverConfig WDConfig Source # 
Instance details

Defined in Test.WebDriver.Config

defaultConfig :: WDConfig Source #

A default session config connects to localhost on port 4444, and hasn't been initialized server-side. This value is the same as def but with a less polymorphic type.

Configuration helper functions

Instead of working with the Capabilities record directly, you can use these config modifier functions to specify common options.

useBrowser :: HasCapabilities t => Browser -> t -> t Source #

A helper function for setting the browser capability of a HasCapabilities instance

useProxy :: HasCapabilities t => ProxyType -> t -> t Source #

A helper function for setting the useProxy capability of a HasCapabilities instance

useVersion :: HasCapabilities t => String -> t -> t Source #

A helper function for setting the version capability of a HasCapabilities instance

usePlatform :: HasCapabilities t => Platform -> t -> t Source #

A helper function for setting the platform capability of a HasCapabilities instance

Session history configuration

type SessionHistoryConfig = SessionHistory -> [SessionHistory] -> [SessionHistory] Source #

A function used by wdHistoryConfig to append new entries to session history.

noHistory :: SessionHistoryConfig Source #

No session history is saved.

onlyMostRecentHistory :: SessionHistoryConfig Source #

Saves only the most recent history

HTTP request header utilities

withRequestHeaders :: WDSessionStateControl m => RequestHeaders -> m a -> m a Source #

Set a temporary list of custom RequestHeaders to use within the given action. All previous custom headers are temporarily removed, and then restored at the end.

withAuthHeaders :: WDSessionStateControl m => m a -> m a Source #

Makes all webdriver HTTP requests in the given action use the session's auth headers, typically configured by setting the wdAuthHeaders config. This is useful if you want to temporarily use the same auth headers you used for session creation with other HTTP requests.

WebDriver commands

Capabilities (advanced configuration)

data Capabilities Source #

A structure describing the capabilities of a session. This record serves dual roles.

  • It's used to specify the desired capabilities for a session before it's created. In this usage, fields that are set to Nothing indicate that we have no preference for that capability.
  • When received from the server , it's used to describe the actual capabilities given to us by the WebDriver server. Here a value of Nothing indicates that the server doesn't support the capability. Thus, for Maybe Bool fields, both Nothing and Just False indicate a lack of support for the desired capability.

Constructors

Capabilities 

Fields

defaultCaps :: Capabilities Source #

Default capabilities. This is the same as the Default instance, but with less polymorphism. By default, we use firefox of an unspecified version with default system-wide proxy settings on whatever platform is available . All Maybe capabilities are set to Nothing (no preference).

allCaps :: Capabilities Source #

Same as defaultCaps, but with all Maybe Value capabilities set to Just True.

modifyCaps :: HasCapabilities t => (Capabilities -> Capabilities) -> t -> t Source #

Modifies the wdCapabilities field of a WDConfig by applying the given function. Overloaded to work with any HasCapabilities instance.

data Platform Source #

Represents platform options supported by WebDriver. The value Any represents no preference.

Constructors

Windows 
XP 
Vista 
Mac 
Linux 
Unix 
Any 

Instances

Instances details
FromJSON Platform Source # 
Instance details

Defined in Test.WebDriver.Capabilities

ToJSON Platform Source # 
Instance details

Defined in Test.WebDriver.Capabilities

Bounded Platform Source # 
Instance details

Defined in Test.WebDriver.Capabilities

Enum Platform Source # 
Instance details

Defined in Test.WebDriver.Capabilities

Show Platform Source # 
Instance details

Defined in Test.WebDriver.Capabilities

Eq Platform Source # 
Instance details

Defined in Test.WebDriver.Capabilities

Ord Platform Source # 
Instance details

Defined in Test.WebDriver.Capabilities

data ProxyType Source #

Available settings for the proxy Capabilities field

Constructors

NoProxy 
UseSystemSettings 
AutoDetect 
PAC

Use a proxy auto-config file specified by URL

Manual

Manually specify proxy hosts as hostname:port strings. Note that behavior is undefined for empty strings.

Browser-specific capabilities

data Browser Source #

This constructor simultaneously specifies which browser the session will use, while also providing browser-specific configuration. Default configuration is provided for each browser by firefox, chrome, opera, ie, etc.

This library uses firefox as its Default browser configuration, when no browser choice is specified.

Constructors

Firefox 

Fields

  • ffProfile :: Maybe (PreparedProfile Firefox)

    The firefox profile to use. If Nothing, a default temporary profile is automatically created and used.

  • ffLogPref :: LogLevel

    Firefox logging preference

  • ffBinary :: Maybe FilePath

    Server-side path to Firefox binary. If Nothing, use a sensible system-based default.

  • ffAcceptInsecureCerts :: Maybe Bool

    Available after Firefox 52, and required only for Firefox geckodriver. Indicates whether untrusted and self-signed TLS certificates are implicitly trusted on navigation for the duration of the session.

Chrome 

Fields

IE 

Fields

  • ieIgnoreProtectedModeSettings :: Bool

    Whether to skip the protected mode check. If set, tests may become flaky, unresponsive, or browsers may hang. If not set, and protected mode settings are not the same for all zones, an exception will be thrown on driver construction.

  • ieIgnoreZoomSetting :: Bool

    Indicates whether to skip the check that the browser's zoom level is set to 100%. Value is set to false by default.

  • ieInitialBrowserUrl :: Maybe Text

    Allows the user to specify the initial URL loaded when IE starts. Intended to be used with ignoreProtectedModeSettings to allow the user to initialize IE in the proper Protected Mode zone. Using this capability may cause browser instability or flaky and unresponsive code. Only "best effort" support is provided when using this capability.

  • ieElementScrollBehavior :: IEElementScrollBehavior

    Allows the user to specify whether elements are scrolled into the viewport for interaction to align with the top or bottom of the viewport. The default value is to align with the top of the viewport.

  • ieEnablePersistentHover :: Bool

    Determines whether persistent hovering is enabled (true by default). Persistent hovering is achieved by continuously firing mouse over events at the last location the mouse cursor has been moved to.

  • ieEnableElementCacheCleanup :: Bool

    Determines whether the driver should attempt to remove obsolete elements from the element cache on page navigation (true by default). This is to help manage the IE driver's memory footprint , removing references to invalid elements.

  • ieRequireWindowFocus :: Bool

    Determines whether to require that the IE window have focus before performing any user interaction operations (mouse or keyboard events). This capability is false by default, but delivers much more accurate native events interactions.

  • ieBrowserAttachTimeout :: Integer

    The timeout, in milliseconds, that the driver will attempt to locate and attach to a newly opened instance of Internet Explorer . The default is zero, which indicates waiting indefinitely.

  • ieLogFile :: Maybe FilePath

    The path to file where server should write log messages to. By default it writes to stdout.

  • ieLogLevel :: IELogLevel

    The log level used by the server. Defaults to IELogFatal

  • ieHost :: Maybe Text

    The address of the host adapter on which the server will listen for commands.

  • ieExtractPath :: Maybe Text

    The path to the directory used to extract supporting files used by the server. Defaults to the TEMP directory if not specified.

  • ieSilent :: Bool

    Suppresses diagnostic output when the server is started.

  • ieForceCreateProcess :: Bool

    Forces launching Internet Explorer using the CreateProcess API. If this option is not specified, IE is launched using the IELaunchURL, if it is available. For IE 8 and above, this option requires the TabProcGrowth registry value to be set to 0.

  • ieSwitches :: Maybe Text

    Specifies command-line switches with which to launch Internet Explorer. This is only valid when used with the forceCreateProcess.

Opera 

Fields

  • operaBinary :: Maybe FilePath

    Server-side path to the Opera binary

  • operaProduct :: Maybe String

    Which Opera product we're using, e.g. "desktop", "core"

  • operaDetach :: Bool

    Whether the Opera instance should stay open after we close the session. If false, closing the session closes the browser.

  • operaAutoStart :: Bool

    Whether to auto-start the Opera binary. If false, OperaDriver will wait for a connection from the browser. By default this is True.

  • operaIdle :: Bool

    Whether to use Opera's alternative implicit wait implementation. It will use an in-browser heuristic to guess when a page has finished loading. This feature is experimental, and disabled by default.

  • operaDisplay :: Maybe Int

    (*nix only) which X display to use.

  • operaLauncher :: Maybe FilePath

    Path to the launcher binary to use. The launcher is a gateway between OperaDriver and the Opera browser. If Nothing, OperaDriver will use the launcher supplied with the package.

  • operaPort :: Maybe Word16

    The port we should use to connect to Opera. If Just 0 , use a random port. If Nothing, use the default Opera port. The default opera constructor uses Just 0, since Nothing is likely to cause "address already in use" errors.

  • operaHost :: Maybe String

    The host Opera should connect to. Unless you're starting Opera manually you won't need this.

  • operaOptions :: Maybe String

    Command-line arguments to pass to Opera.

  • operaLogFile :: Maybe FilePath

    Where to send the log output. If Nothing, logging is disabled.

  • operaLogPref :: LogLevel

    Log level preference. Defaults to LogInfo

Phantomjs 
HTMLUnit 
IPhone 
IPad 
Android 
Browser Text

some other browser, specified by a string name

Instances

Instances details
FromJSON Browser Source # 
Instance details

Defined in Test.WebDriver.Capabilities

ToJSON Browser Source # 
Instance details

Defined in Test.WebDriver.Capabilities

Show Browser Source # 
Instance details

Defined in Test.WebDriver.Capabilities

Default Browser Source # 
Instance details

Defined in Test.WebDriver.Capabilities

Methods

def :: Browser #

Eq Browser Source # 
Instance details

Defined in Test.WebDriver.Capabilities

Methods

(==) :: Browser -> Browser -> Bool #

(/=) :: Browser -> Browser -> Bool #

data LogLevel Source #

Indicates a log verbosity level. Used in Browser and Opera configuration.

Instances

Instances details
FromJSON LogLevel Source # 
Instance details

Defined in Test.WebDriver.Capabilities

ToJSON LogLevel Source # 
Instance details

Defined in Test.WebDriver.Capabilities

Bounded LogLevel Source # 
Instance details

Defined in Test.WebDriver.Capabilities

Enum LogLevel Source # 
Instance details

Defined in Test.WebDriver.Capabilities

Read LogLevel Source # 
Instance details

Defined in Test.WebDriver.Capabilities

Show LogLevel Source # 
Instance details

Defined in Test.WebDriver.Capabilities

Default LogLevel Source # 
Instance details

Defined in Test.WebDriver.Capabilities

Methods

def :: LogLevel #

Eq LogLevel Source # 
Instance details

Defined in Test.WebDriver.Capabilities

Ord LogLevel Source # 
Instance details

Defined in Test.WebDriver.Capabilities

Browser defaults

firefox :: Browser Source #

Default Firefox settings. All Maybe fields are set to Nothing. ffLogPref is set to LogInfo.

chrome :: Browser Source #

Default Chrome settings. All Maybe fields are set to Nothing, no options are specified, and no extensions are used.

ie :: Browser Source #

Default IE settings. See the IE constructor for more details on individual defaults

opera :: Browser Source #

Default Opera settings. See the Opera constructor for more details on individual defaults.

Exception handling

finallyClose :: WebDriver wd => wd a -> wd a Source #

A finalizer ensuring that the session is always closed at the end of the given WD action, regardless of any exceptions.

closeOnException :: WebDriver wd => wd a -> wd a Source #

Exception handler that closes the session when an asynchronous exception is thrown, but otherwise leaves the session open if the action was successful.

Accessing session history

getSessionHistory :: WDSessionState wd => wd [SessionHistory] Source #

Gets the command history for the current session.

dumpSessionHistory :: WDSessionStateControl wd => wd a -> wd a Source #

Prints a history of API requests to stdout after computing the given action.