Class VerisoftDriver

java.lang.Object
co.verisoft.fw.selenium.drivers.VerisoftDriver
All Implemented Interfaces:
org.openqa.selenium.HasCapabilities, org.openqa.selenium.interactions.Interactive, org.openqa.selenium.JavascriptExecutor, org.openqa.selenium.PrintsPage, org.openqa.selenium.SearchContext, org.openqa.selenium.TakesScreenshot, org.openqa.selenium.virtualauthenticator.HasVirtualAuthenticator, org.openqa.selenium.WebDriver, org.openqa.selenium.WrapsDriver
Direct Known Subclasses:
VerisoftMobileDriver

public class VerisoftDriver extends Object implements org.openqa.selenium.WebDriver, org.openqa.selenium.JavascriptExecutor, org.openqa.selenium.HasCapabilities, org.openqa.selenium.virtualauthenticator.HasVirtualAuthenticator, org.openqa.selenium.interactions.Interactive, org.openqa.selenium.PrintsPage, org.openqa.selenium.TakesScreenshot, org.openqa.selenium.WrapsDriver
VeriSoft driver. A top level object which handles all types of WebDriver interfaces -
1. Local and Remote
2. All Apppium and Selenium based drivers (Web and mobile are currently supported)

VeriSoft driver is a concrete class which implements a variety of interfaces (which makes it easier not having to perform castings on many operations).
I supports local creation of local WebDriver objects using WebDriverManager package (see more about WebDriverManager at WebDriverManager Github Repository )
It also supports creation of remote WebDriver objects using the built-in Selenium mechanism. VeriSoftDriver follows the RemoteWebDriver.java architecture, and actually stores an instance of RemoteWebDriver in it.

VerisoftDriver implements the WebDriver behavior, and in addition, it also adds some functionality. The main additional functionalities which are currently supported:
1. Async operations. See async operation in the "See Also" section
2. Extended logging
3. All available events included within the Selenium framework are registered. See events in the "See Also" section
4. WebDriver is wrapped with EventFiringDecorator. See in the "See Also" section


The driver is instanciated by specifying the relevant DesiredCapabilities, and if the driver is a remote driver, specifying remote url. All of VeriSoft's ctors expectes at least a DesiredCapabilities object.
All other inner WebDriver class are also implemented as delegate classes.

TODO Add support to client-server drives e.g WinAppDriver and Winium TODO Add additional drivers support such as dockers (see Selenium-Jupiter for a list of supported drivers) TODO Find ways to add unit tests to this class (it is heavily dependened on OS, external SW etc.). Maybe dockers?
Example 1 - Creating a local VerisoftDriver with firefox as driver:

     
     DesiredCapabilities capabilities = new DesiredCapabilities();
     capabilities.setCapability("browserName", "firefox");

     WebDriver driver = new VerisoftDriver(capabilities);

     driver.get("http://www.google.com");
     String title = driver.getTitle();
     if (title == "Google")
         System.out.println("We are in Google homepage");

     driver.close();
     
 

Example 2 - Creating a remote VerisoftDriver with safari as driver:
     
     DesiredCapabilities capabilities = new DesiredCapabilities();
     capabilities.setCapability("browserName", "safari");

     WebDriver driver = new VerisoftDriver("http://remote-url-address:port", capabilities);

     driver.get("http://www.google.com");
     String title = driver.getTitle();
     if (title == "Google")
         System.out.println("We are in Google homepage");

     driver.close();
     
 

Since:
1.9.6
Author:
Nir Gallner @ www.VeriSoft.co
See Also:
  • Field Details

    • driver

      protected org.openqa.selenium.WebDriver driver
  • Constructor Details

    • VerisoftDriver

      public VerisoftDriver(org.openqa.selenium.Capabilities capabilities)
    • VerisoftDriver

      public VerisoftDriver(URL url, org.openqa.selenium.Capabilities capabilities, Map<String,String> customHeaders)
    • VerisoftDriver

      public VerisoftDriver(@Nullable @Nullable URL remoteAddress, org.openqa.selenium.Capabilities capabilities)
      C-tor for local and remote drivers
      Parameters:
      remoteAddress - address of the remote Selenium server
      capabilities - capabilities object
    • VerisoftDriver

      public VerisoftDriver(org.openqa.selenium.remote.HttpCommandExecutor commandExecutor, org.openqa.selenium.Capabilities capabilities)
    • VerisoftDriver

      public VerisoftDriver(org.openqa.selenium.WebDriver otherDriver)
  • Method Details

    • addListener

      public void addListener(@NotNull @NotNull org.openqa.selenium.support.events.WebDriverListener listener)
    • get

      public void get(String url)
      Specified by:
      get in interface org.openqa.selenium.WebDriver
    • getCurrentUrl

      public String getCurrentUrl()
      Specified by:
      getCurrentUrl in interface org.openqa.selenium.WebDriver
    • getTitle

      public String getTitle()
      Specified by:
      getTitle in interface org.openqa.selenium.WebDriver
    • findElements

      public List<org.openqa.selenium.WebElement> findElements(org.openqa.selenium.By by)
      Specified by:
      findElements in interface org.openqa.selenium.SearchContext
      Specified by:
      findElements in interface org.openqa.selenium.WebDriver
    • findElement

      public org.openqa.selenium.WebElement findElement(org.openqa.selenium.By by)
      Specified by:
      findElement in interface org.openqa.selenium.SearchContext
      Specified by:
      findElement in interface org.openqa.selenium.WebDriver
    • getPageSource

      public String getPageSource()
      Specified by:
      getPageSource in interface org.openqa.selenium.WebDriver
    • close

      public void close()
      Specified by:
      close in interface org.openqa.selenium.WebDriver
    • quit

      public void quit()
      Specified by:
      quit in interface org.openqa.selenium.WebDriver
    • getWindowHandles

      public Set<String> getWindowHandles()
      Specified by:
      getWindowHandles in interface org.openqa.selenium.WebDriver
    • getWindowHandle

      public String getWindowHandle()
      Specified by:
      getWindowHandle in interface org.openqa.selenium.WebDriver
    • switchTo

      public org.openqa.selenium.WebDriver.TargetLocator switchTo()
      Specified by:
      switchTo in interface org.openqa.selenium.WebDriver
    • manage

      public org.openqa.selenium.WebDriver.Options manage()
      Specified by:
      manage in interface org.openqa.selenium.WebDriver
    • executeScript

      public Object executeScript(String script, Object... args)
      Specified by:
      executeScript in interface org.openqa.selenium.JavascriptExecutor
    • executeAsyncScript

      public Object executeAsyncScript(String script, Object... args)
      Specified by:
      executeAsyncScript in interface org.openqa.selenium.JavascriptExecutor
    • pin

      public org.openqa.selenium.ScriptKey pin(String script)
      Specified by:
      pin in interface org.openqa.selenium.JavascriptExecutor
    • unpin

      public void unpin(org.openqa.selenium.ScriptKey key)
      Specified by:
      unpin in interface org.openqa.selenium.JavascriptExecutor
    • getPinnedScripts

      public Set<org.openqa.selenium.ScriptKey> getPinnedScripts()
      Specified by:
      getPinnedScripts in interface org.openqa.selenium.JavascriptExecutor
    • executeScript

      public Object executeScript(org.openqa.selenium.ScriptKey key, Object... args)
      Specified by:
      executeScript in interface org.openqa.selenium.JavascriptExecutor
    • getCapabilities

      public org.openqa.selenium.Capabilities getCapabilities()
      Specified by:
      getCapabilities in interface org.openqa.selenium.HasCapabilities
    • addVirtualAuthenticator

      public org.openqa.selenium.virtualauthenticator.VirtualAuthenticator addVirtualAuthenticator(org.openqa.selenium.virtualauthenticator.VirtualAuthenticatorOptions options)
      Specified by:
      addVirtualAuthenticator in interface org.openqa.selenium.virtualauthenticator.HasVirtualAuthenticator
    • removeVirtualAuthenticator

      public void removeVirtualAuthenticator(org.openqa.selenium.virtualauthenticator.VirtualAuthenticator authenticator)
      Specified by:
      removeVirtualAuthenticator in interface org.openqa.selenium.virtualauthenticator.HasVirtualAuthenticator
    • perform

      public void perform(Collection<org.openqa.selenium.interactions.Sequence> actions)
      Specified by:
      perform in interface org.openqa.selenium.interactions.Interactive
    • resetInputState

      public void resetInputState()
      Specified by:
      resetInputState in interface org.openqa.selenium.interactions.Interactive
    • print

      public org.openqa.selenium.Pdf print(org.openqa.selenium.print.PrintOptions printOptions) throws org.openqa.selenium.WebDriverException
      Specified by:
      print in interface org.openqa.selenium.PrintsPage
      Throws:
      org.openqa.selenium.WebDriverException
    • getScreenshotAs

      public <X> X getScreenshotAs(org.openqa.selenium.OutputType<X> target) throws org.openqa.selenium.WebDriverException
      Specified by:
      getScreenshotAs in interface org.openqa.selenium.TakesScreenshot
      Throws:
      org.openqa.selenium.WebDriverException
    • getWrappedDriver

      public org.openqa.selenium.WebDriver getWrappedDriver()
      Specified by:
      getWrappedDriver in interface org.openqa.selenium.WrapsDriver
    • async

      public AsyncListenerImp async()
      Retrieves the Async listener. If it is not initialized yet, initializes the listener
      Returns:
      AsyncListener object