xh-dev / simplified-selenium-api-4-scala   1.0.2

GitHub

just some short cut and syntax sugar to the java version of selenium api

Scala versions: 2.13

Simplified selenium API for scala

Maven

Build Script

mvn clean compile package package

scala 2.13

<dependency>
    <groupId>me.xethh.libs</groupId>
    <artifactId>simplified-selenium-api-4-scala_2.13</artifactId>
    <version>1.0.2</version>
</dependency>

Example

Package to be import

import me.xethh.lib.simplfiedSeleniumApi4Scala.Selenium4s

Code Init

//Import implicit conversion coding

import me.xethh.lib.simplfiedSeleniumApi4Scala.Selenium4s.impl._

import me.xethh.lib.simplfiedSeleniumApi4Scala.Selenium4s
import org.openqa.selenium.chrome.ChromeDriver
import org.openqa.selenium.support.ui.WebDriverWait

Selenium4s.setChromeDriveLocation("/path/to/chromedriver.exe")
//Set web driver and web driver wait to be implicit object
implicit val driver: ChromeDriver = Selenium4s.chromeDriverWithOption()

// Or with option
//implicit val driver: ChromeDriver = Selenium4s.chromeDriverWithOption{option=>
  //option.addArguments()
//}
implicit val waitFor: WebDriverWait = driver.waitFor(10)    

Coding


Create By object
//Import implicit conversion coding
import me.xethh.lib.simplfiedSeleniumApi4Scala.Selenium4s.impl._

val by = "input#pwd".css()
val by2 = "[xpath]".xpath()

Code in original selenium java api

By by = By.cssSelector("input#pwd");
By by2 = By.xpath("[xpath]");

Obtain input web element and send text to input

Load css selector of "input#pwd" element and send text to the input

//Import implicit conversion coding
import me.xethh.lib.simplfiedSeleniumApi4Scala.Selenium4s.impl._

"input#pwd".waitForSingle.get.sendKeys("password")

Code in original selenium java api

By by = By.cssSelector("input#pwd");
WebElement element = wait.until(ExpectedConditions.numberOfElementsToBe(by, 1)).get(0);
element.sendKeys("password");

Scroll to element and click
//Import implicit conversion coding
import me.xethh.lib.simplfiedSeleniumApi4Scala.Selenium4s.impl._

"input#pwd".waitForSingle.get.let{it=>
  it.scrollToMe
  driver.actions.moveToElement(it).click(it).build().perform();
}

Code in original selenium java api

        By by = By.cssSelector("input#pwd");
        WebElement element = wait.until(ExpectedConditions.numberOfElementsToBe(by, 1)).get(0);
        ((JavascriptExecutor)driver).executeScript("arguments[0].scrollIntoView()",element)
        element.sendKeys("password");
        new Actions(driver)..moveToElement(element).click(element).build().perform()

Exponential Backoff

Exponential Backoff