
com.github.pierrenodet.fs2.selenium.Element.scala Maven / Gradle / Ivy
The newest version!
package com.github.pierrenodet.fs2.selenium
import cats.effect.Sync
import cats.implicits._
import org.openqa.selenium._
import scala.collection.JavaConverters._
trait Element[F[_]] {
val _webElement: WebElement
def clear(): F[Unit]
def click(): F[Unit]
def findElement(by: By): F[scala.Option[Element[F]]]
def findElements(by: By): F[List[Element[F]]]
def attribute(name: String): F[String]
def css(propertyName: String): F[String]
def location: F[Point]
def rectangle: F[Rectangle]
def size: F[Dimension]
def tagName: F[String]
def text: F[String]
def displayed: F[Boolean]
def enabled: F[Boolean]
def selected: F[Boolean]
def sendKeys(keys: String): F[Unit]
def submit(): F[Unit]
}
object Element {
def apply[F[_]: Sync](webElement: WebElement): Element[F] = {
impl.mkElement(webElement)
}
object impl {
def mkElement[F[_]: Sync](webElement: WebElement): Element[F] = new Element[F] {
val _webElement: WebElement = webElement
def clear(): F[Unit] =
Sync[F].delay(webElement.clear())
def click(): F[Unit] =
Sync[F].delay(webElement.click())
def findElement(by: By): F[scala.Option[Element[F]]] =
Sync[F].delay(
Either.catchOnly[NoSuchElementException](Element[F](webElement.findElement(by))).toOption
)
def findElements(by: By): F[List[Element[F]]] =
Sync[F].delay(
webElement.findElements(by).asScala.toList.map(Element[F])
)
def attribute(name: String): F[String] =
Sync[F].delay(webElement.getAttribute(name))
def css(propertyName: String): F[String] =
Sync[F].delay(webElement.getCssValue(propertyName))
def location: F[Point] =
Sync[F].delay(webElement.getLocation)
def rectangle: F[Rectangle] =
Sync[F].delay(webElement.getRect)
def size: F[Dimension] =
Sync[F].delay(webElement.getSize)
def tagName: F[String] =
Sync[F].delay(webElement.getTagName)
def text: F[String] =
Sync[F].delay(webElement.getText)
def displayed: F[Boolean] =
Sync[F].delay(webElement.isDisplayed)
def enabled: F[Boolean] =
Sync[F].delay(webElement.isEnabled)
def selected: F[Boolean] =
Sync[F].delay(webElement.isSelected)
def sendKeys(keys: String): F[Unit] =
Sync[F].delay(webElement.sendKeys(keys))
def submit(): F[Unit] =
Sync[F].delay(webElement.submit())
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy