Appian Selenium API

Overview

The library contains methods which allow you to interact with Appian components in a browser. It can be used in a Java application or integrated directly into any Selenium or Java-based testing tool.

Appian Selenium API contains the methods that are at the core of both Cucumber for Appian and FitNesse for Appian. If you are familiar with either Appian’s FitNesse or Cucumber tools then you are already familiar with the methods provided by the Appian Selenium API. For example, the table below shows the corresponding FitNesse and Cucumber methods for the same underlying Appian Selenium API method.

Appian Selenium API

loginWithUsernameAndPassword(jString userName, String password)

FitNesse for Appian

| login with username | USERNAME | and password | PASSWORD |

Cucumber for Appian

Given I login with username "USERNAME" and password "PASSWORD"

Note: Java 11 required for plugin version 23.4

Key Features & Functionality

The Appian Selenium API plug-in package includes:

  • The Appian Selenium API jar
  • Javadocs
  • An example of how to use the API in a Java application
  • An example of how to use the API in a Cucumber test 

The Appian Selenium API plug-in supports both Chrome and Firefox browsers. See the Appian Playbook for more information: Automated Testing with Appian Selenium API

Note on Appian Versions:

With each Appian release, a new version of the plug-in is also released to support the latest Appian components. This plug-in is backwards compatible, ensuring that you do not need to update your test cases when upgrading to new Appian versions.

Anonymous
  • v23.1.2 Release Notes
    • Bug Fixes
    • Fixes an issue in FitNesse where VerifyText did not work on a multi-node component
    • Fixes an issue where Dropdowns with Search were not working

  • v23.1.1 Release Notes

  • Thanks for that quick fix as our automation scripts for dropdown was not working earlier 

  • v23.1 Release Notes
    • Enhancements
    • Supports Appian version 23.1
    • Updated locator for Dropdown class
    • Bug Fixes
    • Update CVEs
    • Update scripts (start.bat, start-mac.sh, start-unix.sh, runFitNesseTest.sh) to
    reference the new fitnesse-20221219-standalone.jar

  • v22.4 Release Notes
    • Update Chromedriver to v107
    • Add support Appian 22.4

  • Can you please share the selenium and serenity compatible versions for the latest version of selenium api 22.3.1? 

  • Getting error while running the scripts after upgrading the selenium api from 22.2 to 22.3.1. suspect it is a compatibility issue. Could you please advise the compatible selenium and serenity plugins for the new jar.  The issue comes only when we are using 22.3.1. The script is working with previous version jar files.

    net.serenitybdd.core.exceptions.SerenityManagedException: 'void org.openqa.selenium.support.ui.WebDriverWait.<init>(org.openqa.selenium.WebDriver, java.time.Duration)'
    at com.appiancorp.ps.automatedtest.tempo.TempoLogin.navigateToLoginPage(TempoLogin.java:230)
    at com.appiancorp.ps.automatedtest.fixture.BaseFixture.loginIntoWithUsernameAndPassword(BaseFixture.java:435)
    at com.appiancorp.ps.automatedtest.fixture.BaseFixture.loginWithUsernameAndPassword(BaseFixture.java:452)
    at com.westpac.etad.page.LoginPage.enterDeregUsernmaeAndPassword(LoginPage.java:77)
    at com.westpac.etad.step.LoginSteps.loginToDeregApplication(LoginSteps.java:60)
    at com.westpac.etad.step.LoginSteps$$EnhancerByCGLIB$$3e5bb7f8.CGLIB$loginToDeregApplication$2(<generated>)
    at com.westpac.etad.step.LoginSteps$$EnhancerByCGLIB$$3e5bb7f8$$FastClassByCGLIB$$4d07a50.invoke(<generated>)
    at net.sf.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:228)
    at net.thucydides.core.steps.StepInterceptor.invokeMethod(StepInterceptor.java:478)
    at net.thucydides.core.steps.StepInterceptor.executeTestStepMethod(StepInterceptor.java:463)
    at net.thucydides.core.steps.StepInterceptor.runTestStep(StepInterceptor.java:438)
    at net.thucydides.core.steps.StepInterceptor.runOrSkipMethod(StepInterceptor.java:179)
    at net.thucydides.core.steps.StepInterceptor.testStepResult(StepInterceptor.java:166)
    at net.thucydides.core.steps.StepInterceptor.intercept(StepInterceptor.java:72)

  • v22.3.1 Release Notes
    • Update Chromedriver to v104
    • Bug fixes: Fix TempoRecordTypeUserFilter's clear method to work for newer versions of Chrome
  • Editable and Read Only Grid SAIL components cannot find the grid element from accessibityText, although documentation says so. The XPath selector currently only works if you have a label. Tested on version 22.2.1. Currently, we are adding hidden labels so that automation passes. Still, the following XPath does not work for accessibility text as documented because the following sibling does not exist for accessibility text as it's already the parent to the grid.
    Current selector used when looking up the grid:

    //span[contains(translate(text(),'ABCDEFGHIJKLMNOPQRSTUVWXYZ','abcdefghijklmnopqrstuvwxyz'),'your accessibility text or label here')]/parent::div/following-sibling::div/descendant::table[contains(@class, '---table')]/ancestor::div[contains(@class, 'FieldLayout---field_layout')][position()=1]

    The selector should be updated to be as follows if you want to support finding the grid by either labels or accessibility text or both as documented:

    //span[contains(translate(text(),'ABCDEFGHIJKLMNOPQRSTUVWXYZ','abcdefghijklmnopqrstuvwxyz'),'your accessibility text or label here')]/parent::div/parent::div/descendant::table[contains(@class, '---table')]/ancestor::div[contains(@class, 'FieldLayout---field_layout')][position()=1]

  • v22.3.0 Release Notes
    • Enhancements
    • Supports Appian version 22.3 (Remove support for 20.3)