
com.github.pierrenodet.fs2.selenium.Locator.scala Maven / Gradle / Ivy
The newest version!
package com.github.pierrenodet.fs2.selenium
import cats.effect.{Resource, Sync}
import org.openqa.selenium.WebDriver.TargetLocator
trait Locator[F[_]] {
def activeElement(): Element[F]
def alert(): Alert[F]
def defaultContent(): Resource[F, Driver[F]]
def frame(index: Int): Resource[F, Driver[F]]
def frame(name: String): Resource[F, Driver[F]]
def frame(element: Element[F]): Resource[F, Driver[F]]
def parent(): Resource[F, Driver[F]]
def window(name: String): Resource[F, Driver[F]]
}
object Locator {
def apply[F[_]: Sync](targetLocator: TargetLocator): Locator[F] = impl.mkLocator(targetLocator)
object impl {
def mkLocator[F[_]: Sync](targetLocator: TargetLocator): Locator[F] = new Locator[F] {
def activeElement(): Element[F] = Element[F](targetLocator.activeElement())
def alert(): Alert[F] = Alert[F](targetLocator.alert())
def defaultContent(): Resource[F, Driver[F]] =
Driver[F](() => Sync[F].delay(targetLocator.defaultContent()))
def frame(index: Int): Resource[F, Driver[F]] =
Driver[F](() => Sync[F].delay(targetLocator.frame(index)))
def frame(name: String): Resource[F, Driver[F]] =
Driver[F](() => Sync[F].delay(targetLocator.frame(name)))
def frame(element: Element[F]): Resource[F, Driver[F]] =
Driver[F](() => Sync[F].delay(targetLocator.frame(element._webElement)))
def parent(): Resource[F, Driver[F]] =
Driver[F](() => Sync[F].delay(targetLocator.parentFrame()))
def window(name: String): Resource[F, Driver[F]] =
Driver[F](() => Sync[F].delay(targetLocator.window(name)))
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy