G9      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~7Nice combinators for joining up flat strings into URIs. provisionalDon Stewart <dons@galois.com>Join two strings with : Join two strings with = Join two strings with ? Join two strings with  & @+non-portable (multi-parameter type classes) provisionalAaron Tomb <atomb@galois.com> #An SCommand: an action or accessor  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~}  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~}~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!   }  o~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~+Uses mtl, Generalised Newtype Deriving, CPP provisionalAaron Tomb <atomb@galois.com>96The Selenium Monad, an error-handling read-only state Browser types The & of the Selenium server to connect to .The port of the Selenium server to connect to 6The type of browser to start and use to run the tests &The base URL of the site to be tested A session ID filled in by  4Use Network.Browser instead of Network.HTTP if true CRun a Selenium action within the ErrorT monad. Useful for chaining I together several actions without writing intermediate error handling. @Run a Selenium action inside IO. This is the top-level function  you'8ll usually use to run a Selenium command when not using  . (Create an unconnected Selenium session. GStart a session, execute some code with the resulting handle, and then  stop the session. ;Connect to the server, and tell it to start a web browser. ,Tell the server that a session is finished. @Send a Selenium command to the server with a list of arguments. FExecute a list of Selenium commands paired with arguments, and return  | a list of results.  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"! 0+non-portable (multi-parameter type classes) provisionalAaron Tomb <atomb@galois.com>+non-portable (multi-parameter type classes) provisionalAaron Tomb <atomb@galois.com>AStarts up a session and returns a wrapper function that will run 9 commands. Gives common defaults for browser and host. AStarts up a session and returns a wrapper function that will run  commands. 3Stops a session (in the wrapper returned by start)       !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~selenium-0.2.3Test.Selenium.PrettyTest.Selenium.SyntaxTest.Selenium.ServerTest.Selenium.HUnitTest.Selenium.Interactive<:><=><&>SelectOptionLocator OptionIndexOptionId OptionValue OptionLabelLocatorCSSLinkXPathDOMNameIdIdOrNameSCommand SNewSession STestComplete SDeleteCookie SCreateCookie SGetCookie SWaitForPage SSetTimeoutSAddLocationStrategySGetXPathCountSWaitForConditionSGetExpression SSetContextSGetCursorPositionSGetElementHeightSGetElementWidthSGetElementPositionTopSGetElementPositionLeft SIsOrderedSGetElementIndexSSetCursorPositionSGetHTMLSourceSGetAllWindowTitlesSGetAllWindowNamesSGetAllWindowIdsSWindowMaximize SWindowFocusSDragAndDropToObject SDragAndDropSGetMouseSpeedSSetMouseSpeedSGetAttrFromAllWindows SGetAllFields SGetAllLinksSGetAllButtons SIsEditable SIsVisibleSIsElementPresentSIsTextPresent SGetAttributeSGetSelectOptionsSIsSomethingSelectedSGetSelectedIdSGetSelectedIdsSGetSelectedIndexSGetSelectedIndexesSGetSelectedValueSGetSelectedValuesSGetSelectedLabelSGetSelectedLabels SGetTable SIsCheckedSEval SHighlightSGetText SGetValue SGetBodyText SGetTitle SGetLocation SGetPromptSGetConfirmation SGetAlertSIsConfirmationPresentSIsPromptPresentSIsAlertPresentSCloseSRefreshSGoBackSAnswerNextPromptSCancelNextPrompt SWaitForPopupSWindowMatchesExpressionSFrameMatchesExpression SSelectFrame SSelectWindow SOpenWindowSOpenSSubmitSRemoveAllSelectionsSRemoveSelection SAddSelectionSSelectSUncheckSCheck SGetSpeed SSetSpeed STypeKeysSType SMouseMoveAt SMouseMove SMouseUpAtSMouseUp SMouseDownAt SMouseDown SMouseOut SMouseOverSKeyUpSKeyDown SControlKeyUpSControlKeyDown SAltKeyUp SAltKeyDown SMetaKeyUp SMetaKeyDown SShiftKeyUp SShiftKeyDown SKeyPress SFireEventSDoubleClickAtSClickAt SDoubleClickSClickSeleniumBrowserSafariOpera KonquerorFirefoxInternetExplorerSeleniumRCSessionselHostselPort selBrowserselURL selSessionID selUseBrowserunSeleniumReader runSeleniummkSeleniumRCSession withSelenium startSelenium stopSelenium doCommand doCommandListmkURIopensubmit selectFramecheckuncheckclick clickAndWait isTextPresentisElementPresent isCheckedtypeTextkeyPress waitForPage mouseDown mouseMovemouseUp dragAndDropdragAndDropToObject getAttribute getBodyTextevalJSwaitForCondition getAllLinksgetSelectedIndexrunSeleniumTestsTTrunSeleniumTestsBarestart$$stopjoinpretty-1.0.1.2Text.PrettyPrint.HughesPJ fullRenderrender renderStylefcatfsepcatsep<+><>$+$nest zeroWidthTextptexttextcharisEmptyempty punctuatehangvcathsephcatbracesbracketsparens doubleQuotesquotesrationaldoublefloatintegerintrbracelbracerbracklbrackrparenlparenequalsspacecommacolonsemistyleribbonsPerLine lineLengthmodeStylePageMode ZigZagModeLeftMode OneLineModeModeDocChrStrPStr TextDetails CoordinateC network-2.3Network.SocketHostName stringResult integerResult boolResultstringListResult liftCommandintegerCommand boolCommandstringListCommandmkSeleniumTeststart'