webdriver-0.13.0.0: tests/Spec/ElementRetrieval.hs
module Spec.ElementRetrieval where
import Test.Sandwich
import Test.WebDriver
import TestLib.Contexts.Session
import TestLib.Contexts.StaticServer
import TestLib.Types
import UnliftIO.Exception
tests :: SessionSpec
tests = introduceSession $ describe "Element retrieval" $ before "Open test page" openSimpleTestPage $ do
describe "findElem" $ do
it "ByCSS" $ do
findElem (ByCSS "#incrementButton") >>= getText >>= (`shouldBe` "Increment")
it "ByLinkText" $ do
findElem (ByLinkText "Click here") >>= (`attr` "id") >>= (`shouldBe` (Just "click-here-link"))
it "ByPartialLinkText" $ do
findElem (ByPartialLinkText "here") >>= (`attr` "id") >>= (`shouldBe` (Just "click-here-link"))
it "ByTag" $ do
findElem (ByTag "label") >>= (`attr` "id") >>= (`shouldBe` (Just "numberLabel"))
it "ByXPath" $ do
findElem (ByXPath "//a[@id='click-here-link']") >>= getText >>= (`shouldBe` "Click here")
it "Nonexistent" $ do
Left (FailedCommand {..}) <- try $ findElem (ByCSS ".nonexistent-element")
rspError `shouldBe` NoSuchElement
it "findElems" $ do
(length <$> findElems (ByCSS ".input-box")) >>= (`shouldBe` 3)
it "findElemFrom" $ do
container <- findElem (ByCSS ".input-boxes")
findElemFrom container (ByCSS "#input1") >>= (`attr` "class") >>= (`shouldBe` (Just "input-box"))
it "findElemsFrom" $ do
container <- findElem (ByCSS ".input-boxes")
(length <$> findElemsFrom container (ByCSS ".input-box")) >>= (`shouldBe` 2)
it "activeElem" $ do
container <- findElem (ByCSS "#input1")
click container
el <- activeElem
el `shouldBe` container