The capabilities described on this page are included in Appian's standard capability tier. Usage limits may apply. |
The Browser module contains a number of Java methods that enable a robotic task to open and interact with web browsers. Through this module, you can navigate to a URL and interact with the web page just as a human would: click on the page controls, select options, enter values in text fields, retrieve HTML items, and more.
This page describes how to integrate browser methods into your robotic task using the Java module. See the low-code Browser module page for guidance in an easier and more robust development experience.
To use the Browser module in your projects, you first must include the module dependency in the pom.xml.
Browser actions require Selenium to work properly and interact with browsers.
Note: Appian can only update web drivers automatically when the robotic task uses Chrome, Firefox, or Edge. If you are using Edge (IE Mode), you must add and maintain the web driver support file manually.
Instead of having to manually download and add web drivers to your support files, Appian can automatically maintain Selenium web drivers for you. This option is turned off by default.
When you select this option, Appian automatically provides the necessary web drivers for the browser you are using in your robotic tasks and the task recorder. When you allow Appian to add and update web drivers automatically, you avoid the common problem of having a web driver go out of date when the corresponding browser updates.
Note: The option to automatically provide web drivers is not supported for Appian Government Cloud (AGC) customers.
To allow Appian to automatically provide web drivers:
That's it! With this option selected, there isn't anything else to configure.
This area describes each of the components needed to work with the Appian RPA Browser actions:
selenium-java
, are called drivers. It is important to know this terminology to avoid confusion.Browsers: the web browsers to use in the automation. The following table summarizes browser and operating system compatibility:
Windows | Mac | Linux | |
---|---|---|---|
Chrome | Supported | Supported | Supported |
Firefox | Supported | Supported | Supported |
Edge | Supported | Supported | Unsupported |
Edge (IE Mode) | Supported | Unsupported | Unsupported |
Opera | Unsupported | Unsupported | Unsupported |
Note: Opera Browser is only supported for RPA 9.11 and previous. Support was removed in RPA 9.12.
The following image shows how all these components are connected:
Note: Edge (IE mode) requires the Internet Explorer driver support file.
Different servers available for each supported browser:
Tip: If you are not allowing Appian to provide drivers automatically, you must add the downloaded driver to the robotic task definition as Support Files. You must put the driver into a folder that you create with a specific name, depending on the operating system and browser, as shown below. Usually, a robotic task will only have to interact with one browser, so you don't need to upload all the files shown in the image.
Here is what the support file structure looks like for the various host machine types:
Windows:
Driver paths for Windows are case insensitive. The path can begin with an upper or lowercase letter (ChromeWebDriver
or chromeWebDriver
)and the robotic task will reference either with the same result.
Mac:
Driver paths for Mac are case insensitive. The path can begin with an upper or lowercase letter (ChromeWebDriver
or chromeWebDriver
) and the robotic task will reference either with the same result.
Linux:
Driver paths for Linux are case sensitive and must begin with an uppercase letter, for example: ChromeWebDriver
. If the path doesn't begin with an uppercase letter, the robotic task won't be able to reference the support file.
Not all versions of each component are compatible with each other. We recommend that you always work with the most recent versions of the browsers and their bridge servers. In all cases, they must be compatible with the Selenium version integrated into the Appian RPA Browser actions. Visit the links below for each web browser to know what versions are supported for the rest of the components:
macos.tar.gz
rather than macos-aarch64.tar.gz
).This section highlights some commonly used aspects of the Browser Java module. You can find complete documentation for Appian RPA's Java methods in the Appian RPA console by clicking Help > Javadoc.
The core interface of the Appian RPA Browser module is com.novayre.jidoka.browser.api.IWebBrowserSupport
. This interface provides the methods to interact with the browser and the components of a page.
This code snippet calls the interface:
1
2
IWebBrowserSupport browser =
IWebBrowserSupport.getInstance(this, client);
Where client is an instance of IClient and this is a reference to the robotic task that uses the module.
Once the instance of IWebBrowserSupport is called, we should properly initialize it. Set the browser to use and the default timeout:
1
2
3
// Set the browser to Chrome
browser.setBrowserType(EBrowsers.CHROME);
browser.setTimeoutSeconds(60);
In this example, Google Chrome is set as the browser with a timeout of 60
seconds.
The enumerator type EBrowsers contains the identifiers for all the supported browsers: CHROME
, EDGE
, INTERNET_EXPLORER
, FIREFOX
, and OPERA
.
To set other browsers:
1
2
3
4
5
6
7
8
// Set the browser to Edge
browser.setBrowserType(EBrowsers.EDGE);
// Set the browser to Internet Explorer
browser.setBrowserType(EBrowsers.INTERNET_EXPLORER);
// Set the browser to Mozilla Firefox
browser.setBrowserType(EBrowsers.FIREFOX);
Putting it all together, the full code to initialize the Browser module is:
1
2
3
4
5
6
7
8
9
10
// IClient
IClient client = IClient.getInstance(this);
// IWebBrowserSupport
IWebBrowserSupport browser =
IWebBrowserSupport.getInstance(this, client);
// Set the browser to Internet Explorer
browser.setBrowserType(EBrowsers.INTERNET_EXPLORER);
browser.setTimeoutSeconds(60);
Now that you have properly initialized the browser, you can open it and navigate to a web page. This example will open the browser and visit the Appian website:
1
2
3
4
5
6
// Open browser
browser.initBrowser();
// Navigate to a URL
String url = "https://www.appian.com";
browser.navigate(url);
Appian RPA relies on the Selenium WebDriver API to simulate user interaction in the browsers. Consult the Selenium documentation below for your browser and your browser version. Refer to the Browser module architecture for instructions on how to configure the robotic tasks.
For further information, go to the Selenium website.
When a new tab is opened by the browser either automatically or as the result of a user action, you are required to explicitly switch to this tab if you want to interact with it.
To change from one tab to another in the Browser module, you must call the switchTo() method as described below:
Example:
1
2
3
List<String> tabs = new ArrayList<String>(browser.getDriver().getWindowHandles());
browser.getDriver().switchTo().window(tabs.get(tabs.size() - 1));
To access the elements contained in another frame or another pop-up window, you must be positioned inside it. Using the element inspector of the browser, get the name of the frame containing the element to find and use it in the method browser.frameSetNavigation(String frame).
Yes, the Browser module is developed from Selenium and the developer can use all the options that Selenium offers by getting the driver invoking browser.getDriver()
.
To run JavaScript, use the following code:
1
2
3
JavascriptExecutor jsExecutor = ((JavascriptExecutor) browser.getDriver());
jsExecutor.executeScript("YOUR CODE HERE");
The purpose of the method findElement is to wait for a page to be completely loaded and to find an element on this page. As such, this method uses the default timeout defined in the Browser module (60 seconds). This means that if the element is not present on the page, the method keeps looking for up to 60 seconds.
To find a WebElement that is not always present in the page, use one of the following options:
Use the existsElement() method, which has a shorter default timeout.
1
2
3
4
5
if (browser.existsElement(By.xpath("//xpath/expression"))) {
server.info("Doesn't exist the element");
} else {
// ...
}
Modify the timeout used by the findElement method:
browser.setTimeOutSecondsWaitElement(int second);
If you change this timeout for a specific action, it is recommended to restore it afterwards.
Browser Java Module