module Happybara.WebKit.Driver where
import Data.Aeson
import Data.ByteString (ByteString)
import Data.Text (Text)
import Network.HTTP.Types
import Control.Applicative
import Control.Exception
import Control.Monad.Base
import Control.Monad.State
import Control.Monad.Trans.Control
import Happybara.Driver
import Happybara.WebKit.Commands as CMD
import Happybara.WebKit.Session
instance Driver Session where
data Node Session = WebKitNode !Text deriving (Show)
currentUrl sess = do
CMD.currentUrl sess
visit sess url = CMD.visit sess url
findXPath sess query = do
handles <- CMD.findXPath sess query
return $ map WebKitNode handles
findCSS sess query = do
handles <- CMD.findCSS sess query
return $ map WebKitNode handles
html sess = do
CMD.body sess
goBack = error "NOT IMPLEMENTED"
goForward = error "NOT IMPLEMENTED"
executeScript sess script = do
CMD.executeScript sess script
evaluateScript sess script = do
CMD.evaluateScript sess script
saveScreenshot sess path width height = do
CMD.render sess path width height
responseHeaders sess = do
CMD.responseHeaders sess
statusCode sess = do
toEnum <$> CMD.statusCode sess
setFrameFocus sess frameId = do
CMD.setFrameFocus sess frameId
setWindowFocus sess name = error "NOT IMPLEMENTED"
reset sess = do
CMD.reset sess
findXPathRel sess (WebKitNode h) query = do
handles <- CMD.findXPathRel sess h query
return $ map WebKitNode handles
findCSSRel sess (WebKitNode h) query = do
handles <- CMD.findCSSRel sess h query
return $ map WebKitNode handles
allText sess (WebKitNode h) = do
CMD.allText sess h
visibleText sess (WebKitNode h) = do
CMD.visibleText sess h
attr sess (WebKitNode h) name = do
CMD.attr sess h name
getValue sess (WebKitNode h) = do
CMD.value sess h
setValue sess (WebKitNode h) val = do
CMD.set sess h val
selectOption sess (WebKitNode h) = do
CMD.selectOption sess h
unselectOption sess (WebKitNode h) = do
CMD.unselectOption sess h
click sess (WebKitNode h) = do
CMD.click sess h
rightClick sess (WebKitNode h) = do
CMD.rightClick sess h
doubleClick sess (WebKitNode h) = do
CMD.doubleClick sess h
hover sess (WebKitNode h) = do
CMD.hover sess h
dragTo sess (WebKitNode h1) (WebKitNode h2) = do
CMD.dragTo sess h1 h2
tagName sess (WebKitNode h) = do
CMD.tagName sess h
isVisible sess (WebKitNode h) = do
CMD.isVisible sess h
isChecked sess (WebKitNode h) = do
CMD.isChecked sess h
isSelected sess (WebKitNode h) = do
CMD.isSelected sess h
isDisabled sess (WebKitNode h) = do
CMD.isDisabled sess h
path sess (WebKitNode h) = do
CMD.path sess h
trigger sess (WebKitNode h) event = do
CMD.trigger sess h event
nodeEq sess (WebKitNode h1) (WebKitNode h2) = do
CMD.nodeEq sess h1 h2