# ESSO Scripting Language # ESSO Scripting Language ## Introduction The scripting language used is a full ECMAScript interpreter. Nevertheless, it's not a Javascript interpreter as it's used on web browsers. It only has the core elements of ECMAScript (Objects, Arrays, String, etc.) and a set of objects and functions specially designed for its purpouse. When the script is run, the elements matched, either window or HTML components, with a ref-as tag will be declared as global variable. Additionally, in the case of web applications, a global variable named document contains the reference to the full HTML document. Here are the supported functions and classes: 1. [Global functions](https://bookstack.soffid.com/books/esso/page/1-global-functions "1. Global functions") 1. [ESSO SendKeys syntax](https://bookstack.soffid.com/books/esso/page/11-esso-sendkeys-syntax "1.1. ESSO SendKeys syntax") 2. [secretStore object](https://bookstack.soffid.com/books/esso/page/2-secretstore-object "2. secretStore object") 3. [SystemInfo object](https://bookstack.soffid.com/books/esso/page/3-systeminfo-object "3. SystemInfo object") 4. [Window class](https://bookstack.soffid.com/books/esso/page/4-window-class "4. Window class") 5. [Document class](https://bookstack.soffid.com/books/esso/page/5-document-class "5. Document class") 6. [Element class](https://bookstack.soffid.com/books/esso/page/6-element-class "6. Element class") 7. [Collection class](https://bookstack.soffid.com/books/esso/page/7-collection-class "7. Collection class") 8. [File class](https://bookstack.soffid.com/books/esso/page/8-file-class "8. File class") 9. [Directory class](https://bookstack.soffid.com/books/esso/page/9-directory-class "9. Directory class") 10. [MailService class](https://bookstack.soffid.com/books/esso/page/10-mailservice-class "10. MailService class") 11. [NetworkResource class](https://bookstack.soffid.com/books/esso/page/11-networkresource-class "11. NetworkResource class") 12. [Registry class](https://bookstack.soffid.com/books/esso/page/12-registry-class "12. Registry class") 13. [ServerInfo class](https://bookstack.soffid.com/books/esso/page/13-serverinfo-class "13. ServerInfo class") 14. [Hll class (version 1.4.0)](https://bookstack.soffid.com/books/esso/page/14-hll-class-version-140 "14. Hll class (version 1.4.0)") # 1. Global functions Global functions can be used in an **action** element:
debug text: string Sends a message to the debug console.
sleep millis: int Stops script execution for the specified milliseconds. Never stops the execution of the application.
env text: string returns string Gets the value of an environment variable.
exec text: string \[Dir: string\] Run an external application. Optionally, you can specify a directory to change to.
execWait text: string \[Dir: string\] Executes external application and waits for its completion. Optionally, you can specify a directory to change to.
sendKeys text: string Simulates the pressing of the keys indicated. You can see more information on the [ESSO sendKeys syntax page](https://bookstack.soffid.com/books/esso/page/11-esso-sendkeys-syntax).
sendText text: string Simulates keystroke typed text. Unlike the SendKeys function, the text is sent, verbatim, without any interpretation.
alert text: string Displays a confirmation message to the user.
progress text: string Displays a progress message without confirmation from the user.
cancelProgress Hide progress message.
alertNoWait text: string A message, but does not expect the user confirmation.
# 1.1. ESSO SendKeys syntax ## SendKeys syntax The sendKeys function aims to perform as the user pressing keystrokes. Thus, the function SendKeys ("ABC") simulates to press those three letters. The keystrokes will be done independently of the application that generates them. Thus, it is possible to press keys that change the focused control or even the active application using sendKeys. To mimic the action of pressing to keys simultaneously, you can make use of modifiers. The available modifiers are listed at the attached table. So, to send the character ':' you can execute *sendKeys("+.")*. This combination will simulate pressing the Shift key along with '.'. In order to allow a simpler syntax, you can use parentheses to specify more than one key affected by modifiers. Thus, the function SendKeys ("+ (hello)") generates the word HELLO in upper case.
**Modifier** **Key**
@ WINDOWS
+ SHIFT
^ CTRL
% ALT
It should be noted that this method can not get accented letters as a parameter, but the combination necessary to generate the desired letter. This method has a big drawback. The combination of keys needed to get a letter can be different depending of the current keyboard layout. So, in order to send arbitrary text characters, it is recommended to use the function sendText. Additionally, the sendKeys function supports this “virtual keystrokes” that do not correspond to a specific key but an actual action do be done:
**Tag** **Action taken.**
VKEY {X} The virtual code key (VKEY) will be sent. It is useful to use non-standard keys.
XY {BEEP} A sound with a frequency X during Y time (in milliseconds).
{DELAY X} X milliseconds pause.
{DELAY = X} Make a dealy of X milliseconds between each simulated keystrokes.
{AppActivate WindowTitle} Bring foreground and activates the application with the specified title.
To send function keys, you can use the following codes:
**Key** **Tag** **Key** **Tag**
Backspace {BACKSPACE} or {BS} F1 {F1}
Break {BREAK} F2 {F2}
CapsLock {CAPSLOC} F3 {F3}
Delete {DELETE} or {DEL} F4 {F4}
Down arrow {DOWN} F5 {F5}
End {END} F6 {F6}
Enter {ENTER} or ~ F7 {F7}
Ex {ESC} F8 {F8}
Help {HELP} F9 {F9}
Home {HOME} F10 {F10}
Lnsert {INS} F11 {F11}
Left arrow {LEFT} F12 {F12}
Num Lock {NUMLOCK} F13 {F13}
Next page {PGDN} F14 {F14}
Previous page {PGUP} F15 {F15}
Print screen {PRTSC} F16 {F16}
Right Arrow {RIGHT} ^ {CARET}
Scroll Lock {SCROLL} ~ {Tilde}
Tab {TAB} { {LEFTBRACE}
Up arrow {UP} } {RIGHTBRACE}
\+ (Numeric keypad) {ADD} ( {LEFTPAREN}
\- (Numeric keypad) {SUBSTRCT} ) {RIGHTPAREN}
\* (Numeric keypad) {Multiply} windows (left) {LWIN} or {RWIN}
/ (Numeric keypad) {DIVIDE} windows (right) {RWIN}
+ {PLUS} context menu {APPS}
@ {AT}
Here are a few small examples :
**sendKeys parameter** **Effect**
{DELAY=50} 1\. Specifies a pause of 50 milliseconds between keystrokes.
@R 2\. Click Windows + R to invoke the run dialog command.
notepad~ 3\. Enter notepad and pressed enter.
hello world! 4\. Write "Hello world!".
%ua 5\. Click the button to Alt + u, to show the About dialog box ...
{Delay = 100} 1\. Specifies a pause of 100 milliseconds between keystrokes.
{AppActivate Calculator} 2\. Turn the calculator.
{ESC} 3\. Click ESC to clear the contents.
5\*7~ 4\. Write 5 \* 7 and pressed Enter.
{beep 1000 500} 5\. Makes noise.
^C 6\. Press Control-C to copy the contents.
{appactivate Notepad} 7\. Switch to notepad.
^E 8\. Click to e-control dial all.
{DEL} 9\. Click Delete to delete the contents.
Result of 5 \* 7 is: 10\. Writes "The result is 5 \* 7".
^V 11\. Click control-v hold the result..
{DELAY=500}{NUMLOCK}{CAPSLOCK}{SCROLL} 1\. Turn numbers, uppercase and scroll on in order.
{SCROLL}{CAPSLOCK}{NUMLOCK} 2\. Turn them off in the reverse order.
{DELAY=500} 1\. Specifies a pause of 500 milliseconds between keystrokes.
%? 2\. Click Alt-Space.
{DOWN 5} 3\. Click the down arrow five times.
# 2. secretStore object ## Introduction This object is always visible from any action, and provides access to the user's passwords and secrets. User passwords are always related to a system account. This is the object used to retrieve user and password in order to **inject credentials** into applications. ## Methods
getSecret text: string returns string Gets the value of a secret.
getAccounts system: string returns string \[\] Gets the list of accounts available for a given systemsecretStore object.
getAccount system: string returns string Gets the account to use a particular system. If more than one are available, the system will prompt the user for the one to use. If the user cancels the dialog box, an exception will be thrown. If no account is available, the undefined value will be returned.
getPassword system: string account: string returns string Gets the password bound to the account on the system requested.
setPasswordsystem: string account: string newPassword: string Changes the password at the password vault (version 1.4)
setSecretname: string value: string Sets the value of a secret at the password vault (version 1.4)
generatePasswordsystem: string account: string returns string Generates a random password suitable for the selected account (version 1.4)
# 3. SystemInfo object ## Introduction The SystemInfo object is always visible from any **action**, and provides access to information about the machine. ## Attributes
os string Specifies the name of the operating system: Windows / Ubuntu
oSVersion string Indicates the version of the operating system.
osDistribution string Distributor operating system: Microsoft / Ubuntu / RedHat / ....
hostName string Return the team name.
clientHostName string For remote connections, returns the name of the source host.
fileSeparator string Separator files depending on the platform: / Linux \\ For Windows
username string Operating system user name. It can be different from Soffid user name.
# 4. Window class ## Introduction When an action is bound with a user interface application, it creates an object of class Window for each component at the XML descriptor with a ref-as attribute. Those components have the following methods: ## Methods
getText returns string Gets the text value of the component.
setText text: string Change the text value of a component.
click Acts as if the user clicks on the component. It's suitable on button components.
setFocus Move the focus to the component.
# 5. Document class ## Introduction When an action is associated with a Web application, it creates a document that identifies the full HTML document. This object assigned to the document variable. Thus, scripts can access the web contents and its DOM tree in runtime. The document object implement a subset of the standard DOM HtmlDocument. ## Attributes
url string Full URL of the document.
domain string Contains the domain of the page.
title string Title of the document.
cookie string Contains cookies that are bound to this document.
anchors Collection Contains elements of type A.
forms Collection Contains items of type FORM.
images Collection Contains items from IMG.
links Collection Contains elements of type A and AREA.
documentElement Item Contains the root element.
## Methods
getElementById id: string Element returns Find the first element with the specified ID.
getElementsByTagName tag: string returns Collection Find all elements with the specified tag.
write text: string Add content to the document.
writeln text: string Add content and new line to the document.
autofilltext: stringProceed with smart auto fill engine, allowing end user to select and or save accounts. The mandatory parameter sets the domain where to look for accounts.
# 6. Element class ## Introduction The objects of type Element are created for each input element with a ref-as attribute, or are obtained from the Document itself. It implements a subset of the DOM class HtmlElement. ## Attributes
childNodes Collection Vector of children elements.
disabled bool Indicator whether the element is disabled or not.
id string Id attribute of the element.
tagName string Element's tag.
parentNode Item Parent element.
## Methods
getAttribute name: string returns string Gets the attribute value of the element.
setAttribute name: string value: string Updates the attribute value.
removeAttribute name: string Removes an attribute.
getElementsByTagName tag: string returns Collection Find all children with the specified tag.
click Acts as if the user had clicked on the button.
blur Remove focus.
focus Grants focus.
submit Send form contents.
# 7. Collection class ## Introduction The collection object implements a subset of the standard DOM HTMLCollection ## Attributes
length Long Number of items in collection.
## Methods
item id: long returns Element Find the element with id order number. The first element is 0.
namedItem id: string returns Element Search for an item with the given name. First search an element with matching Id attribute. If none is found, search for an element with matching Name attribute.
# 8. File class ## Introduction It allows easy manipulation of files using the File class. ## Constructor
File file: string mode: string Create an object of type File for the specified file. If mode is “r”, the file will be opened in read mode. If mode is “w”, the file will be opened in write mode. If the mode is “a”, the file will be open in append mode.
## Methods
read byte int (1000) returns string Reads at most the specified number of bytes. When no numer is specified, 1000 bytes will be read at most.
readLine returns string Reads untill end of line.
write text: string Writes the specified text.
WriteLine text: string Writes text with and end of line.
close Closes the file.
flush Flush all buffers to disk.
eof returns boolean Returns true if the end of file has been reached.
## (static) methods and attributes Additionally, the File object has the following (static) methods and attributes:
mkdir directory: string Creates the specified directory.
stdin File Attribute that contains a File object associated with standard input.
stdout File Attribute that contains a File object associated with standard output.
stderr File Attribute that contains a File object associated with the standard error output.
copy source: string target: string Copy selected file. This method is not able to copy directories.
delete file: string Deletes a file or directory.
move source: string target: string Moves (or renames) a file or directory.
isDirectory f: string returns boolean Returns true if the specified file is a directory.
canRead f: string returns boolean Returns true if the file can be read.
canWrite f: string returns boolean Returns true if the file can be written.
getParent f: string returns string Returns the parent directory of a file.
# 9. Directory class ## Introduction This class is able to look for directories content. A directory object has the following attributes and methods: ## Constructor
Directory file: string Creates a directory object bound to the specified path.
## Methods
length returns int Indicates the number of files in the directory.
item return string Specifies the name of the file content.
# 10. MailService class ## Introduction Simple tool to send emails. The MailService object has the following methods. ## Constructor
MailService Create an object of type MailServer.
## Methods
setServer server: string Specifies the name of the mail server.
setFrom from: String Specifies the name of the sender.
Setter to: string Specifies the name of the recipient.
send text: string Send the message indicated.
# 11. NetworkResource class ## Introduction Connect and disconnect network services (disks and printers). ## Constructor
NetworkResource Creates an object of type NetworkResource.
## Methods
connectPrinter resource: string model: string Connects a remote printer to the local spooler.
connectDrive localDrive: string resource: string password: string (optional) user: string (optional) Connects a network drive.
disconnectAllPrinters Disconnects all remote printers.
disconnectPrinter name: string Disconnects a remote Printer.
disconnectDrive localName: string Disconnects a remote drive.
# 12. Registry class ## Introduction Manipulate the windows registry. ## Constructor
Registry path: string Create an object of type Registry
## Global objects
Registry.HKEY\_LOCAL\_MACHINE Tree Key LOCAL\_MACHINE
Registry.HKEY\_CURRENT\_USER Tree CURRENT\_USER key
Registry.HKEY\_USERS Tree Key USERS
Registry.HKEY\_CLASSES\_ROOT Tree Key CLASSES\_ROOT
Registry.HKEY\_LOCAL\_MACHINE32 Tree LOCAL\_MACHINE 32-bit keys
Registry.HKEY\_CURRENT\_USER32 Tree CURRENT\_USER key 32bit
Registry.HKEY\_USERS32 Tree 32bit key USERS
Registry.HKEY\_CLASSES\_ROOT32 Tree CLASSES\_ROOT 32-bit keys
## Methods
openKey path: string returns Registry Opens a registry subkey.
createKey path: string returns Registry Creates a registry subkey.
getValue entryName: string Object returns Reads registry value.
setValue entryName: string value: Object type: string Updates a registry value. Type (optional) can be: \- REG\_SZ \- REG\_EXPAND\_SZ \- REG\_BINARY \- REG\_DWORD \- REG\_MULTI\_SZ
# 13. ServerInfo class ## Introduction This helper class allows the script to query information stored at Soffid console. ## Constructor
ServerInfo path: string Queried the server returning an object of type ServerInfo.
## Methods
length returns int Returns the number of rows obtained.
row n: int object returns Returns information about the n-throw from.
The objects returned depend on the path indicated. # 14. Hll class (version 1.4.0) ## Introduction The Hll class gives the script engine access to Hll terminal emulators. When a hll pattern matches the emulator screen, a hll object of class Hll will be crated and can be used by the action script. ## Attributes
sessionId string Full URL of the document.
sessionName string Contains the domain of the page.
columns int Numer of columns.
rows int Number of rows.
## Methods
getCursorLocation returns object with row and column attributes Gets the cursor location.
setCursorLocation row: integer column: integer Changes cursor location.
getContent returns String Gets the terminal emulator screen content.
sendText text: string Send text to host.
sendKeyskeys:stringSend text, possibly containing escape sequences.
## Escape sequence The following escape sequence are defined:
Mnemonic
Meaning
3270
5250
VT
@BLeft TabYesYesNo
@CClearYesYesNo
@DDeleteYesYesNo
@EEnterYesYesNo
@FErase EOFYesYesNo
@HHelpNoYesNo
@IInsertYesYesNo
@JJump (Set Focus)YesYesNo
@LCursor LeftYesYesYes
@NNew LineYesYesYes
@OSpaceYesYesYes
@PPrintYesYesYes
@RResetYesYesNo
@TRight TabYesYesYes
@UCursor UpYesYesYes
@VCursor DownYesYesYes
@X\*DBCS (Reserved)YesYesNo
@ZCursor RightYesYesYes
@0HomeYesYesNo
@1PF1/F1YesYesNo
@2PF2/F2YesYesNo
@3PF3/F3YesYesNo
@4PF4/F4YesYesNo
@5PF5/F5YesYesNo
@6PF6/F6YesYesYes
@7PF7/F7YesYesYes
@8PF8/F8YesYesYes
@9PF9/F9YesYesYes
@aPF10/F10YesYesYes
@bPF11/F11YesYesYes
@cPF12/F12YesYesYes
@dPF13YesYesYes
@ePF14YesYesYes
@fPF15YesYesYes
@gPF16YesYesYes
@hPF17YesYesYes
@iPF18YesYesYes
@jPF19YesYesYes
@kPF20YesYesYes
@lPF21YesYesNo
@mPF22YesYesNo
@nPF23YesYesNo
@oPF24YesYesNo
@qEndYesYesNo
@uPage UpNoYesNo
@vPage DownNoYesNo
@xPA1YesYesNo
@yPA2YesYesNo
@zPA3YesYesNo
@A@CTestNoYesNo
@A@DWord DeleteYesYesNo
@A@EField ExitYesYesNo
@A@FErase InputYesYesNo
@A@HSystem RequestYesYesNo
@A@IInsert ToggleYesYesNo
@A@JCursor SelectYesYesNo
@A@LCursor Left FastYesYesNo
@A@QAttentionYesYesNo
@A@RDevice Cancel (Cancels Print Presentation Space)YesYesNo
@A@TPrint Presentation SpaceYesYesYes
@A@UCursor Up FastYesYesNo
@A@VCursor Down FastYesYesNo
@A@ZCursor Right FastYesYesNo
@A@9Reverse VideoYesYesNo
@A@bUnderscoreYesNoNo
@A@cReset Reverse VideoYesNoNo
@A@dRedYesNoNo
@A@ePinkYesNoNo
@A@fGreenYesNoNo
@A@gYellowYesNoNo
@A@hBlueYesNoNo
@A@iTurquoiseYesNoNo
@A@jWhiteYesNoNo
@A@lReset Host ColorsYesNoNo
@A@tPrint (Personal Computer)YesYesNo
@A@yForward Word TabYesYesNo
@A@zBackward Word TabYesYesNo
@A@-Field -NoYesNo
@A@+Field +NoYesNo
@A@<Record BackspaceNoYesNo
@S@EPrint Presentation Space on HostNoYesNo
@S@xDupYesYesNo
@S@yField MarkYesYesNo
@W@C Edit Copy Yes Yes Yes
@W@D Edit Clear Yes Yes Yes
@W@E Edit Copy Append Yes Yes Yes
@W@L Edit Copy Link Yes Yes Yes
@W@N Edit Paste Next Yes Yes Yes
@W@V Edit Paste Yes Yes Yes
@W@X Edit Cut Yes Yes Yes
@W@Z Edit Undo Yes Yes Yes
@X@1Display SO/SIYesYesNo
@X@5Generate SO/SINoYesNo
@X@6Display AttributeNoYesNo
@X@7Forward CharacterNoYesNo
@X@cSplit Vertical BarNoYesNo
@M@0VT Numeric Pad 0NoNoYes
@M@1VT Numeric Pad 1NoNoYes
@M@2VT Numeric Pad 2NoNoYes
@M@3VT Numeric Pad 3NoNoYes
@M@4VT Numeric Pad 4NoNoYes
@M@5VT Numeric Pad 5NoNoYes
@M@6VT Numeric Pad 6NoNoYes
@M@7VT Numeric Pad 7NoNoYes
@M@8VT Numeric Pad 8NoNoYes
@M@9VT Numeric Pad 9NoNoYes
@M@-VT Numeric Pad -NoNoYes
@M@,VT Numeric Pad ,NoNoYes
@M@.VT Numeric Pad .NoNoYes
@M@eVT Numeric Pad EnterNoNoYes
@M@fVT Edit FindNoNoYes
@M@iVT Edit InsertNoNoYes
@M@rVT Edit RemoveNoNoYes
@M@sVT Edit SelectNoNoYes
@M@pVT Edit Previous ScreenNoNoYes
@M@nVT Edit Next ScreenNoNoYes
@M@aVT PF1NoNoYes
@M@bVT PF2NoNoYes
@M@cVT PF3NoNoYes
@M@dVT PF4NoNoYes
@M@hVT HOld ScreenNoNoYes
@M@(space)Control Code NULNoNoYes
@M@AControl Code SOHNoNoYes
@M@BControl Code STXNoNoYes
@M@CControl Code ETXNoNoYes
@M@DControl Code EOTNoNoYes
@M@EControl Code ENQNoNoYes
@M@FControl Code ACKNoNoYes
@M@GControl Code BELNoNoYes
@M@HControl Code BSNoNoYes
@M@IControl Code HTNoNoYes
@M@JControl Code LFNoNoYes
@M@KControl Code VTNoNoYes
@M@LControl Code FFNoNoYes
@M@MControl Code CRNoNoYes
@M@NControl Code SONoNoYes
@M@OControl Code SINoNoYes
@M@PControl Code DLENoNoYes
@M@QControl Code DC1NoNoYes
@M@RControl Code DC2NoNoYes
@M@SControl Code DC3NoNoYes
@M@TControl Code DC4NoNoYes
@M@UControl Code NAKNoNoYes
@M@VControl Code SYNNoNoYes
@M@WControl Code ETBNoNoYes
@M@XControl Code CANNoNoYes
@M@YControl Code EMNoNoYes
@M@ZControl Code SUBNoNoYes
@M@uControl Code ESCNoNoYes
@M@vControl Code FSNoNoYes
@M@wControl Code GSNoNoYes
@M@xControl Code RSNoNoYes
@M@yControl Code USNoNoYes
@M@zControl Code DELNoNoYes
@Q@AVT User Defined Key 6NoNoYes
@Q@BVT User Defined Key 7NoNoYes
@Q@CVT User Defined Key 8NoNoYes
@Q@DVT User Defined Key 9NoNoYes
@Q@EVT User Defined Key 10NoNoYes
@Q@FVT User Defined Key 11NoNoYes
@Q@GVT User Defined Key 12NoNoYes
@Q@HVT User Defined Key 13NoNoYes
@Q@IVT User Defined Key 14NoNoYes
@Q@JVT User Defined Key 15NoNoYes
@Q@KVT User Defined Key 16NoNoYes
@Q@LVT User Defined Key 17NoNoYes
@Q@MVT User Defined Key 18NoNoYes
@Q@NVT User Defined Key 19NoNoYes
@Q@0VT User Defined Key 20NoNoYes
@Q@aVT BacktabNoNoYes
@Q@rVT Clear PageNoNoYes
@Q@sVT EditNoNoYes
@@@YesYesYes
@$Alternate Cursor (The Presentation Manager Interface only)YesYesYes
@<BackspaceYesYesYes
@:@sScreen ReverseYesYesYes
@:@nBidi LayerYesYesYes
@:@lLatin LayerYesYesYes
@:@FField ReverseYesYesNo
@:@pPushYesNoNo
@:@eEnd PushYesNoNo
@:@aAuto PushYesNoNo
@:@rAuto ReverseYesNoNo
@:@dCSDYesNoNo
@:@fFinalYesNoNo
@:@iIsolatedYesNoNo
@:@mMiddleYesNoNo
@:@tInitialYesNoNo
@:@hField ShapeYesNoNo
@:@uField BaseYesNoNo
@:@bBaseNoYesNo
@:@oCloseNoYesNo
@:@KColumn HeadingNoNoYes
@:@BCursor DirectionNoNoYes
@:@DEncoding ModeNoNoYes
@:@MVT Change Display ModeNoNoYes (Hebrew only)
# ESSO Scripting examples 1\. Run an application like notepad ``` exec ("notepad.exe"); ``` 2\. Automatic application update ```Java if (SystemInfo.os == "Linux") { exec ("(mkdir /tmp/google-chrome-updates && " + " wget -O /tmp/google-chrome-updates/google-chrome-stable_current_amd64.deb " + " -c https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb " + " && apt-get update && sudo apt-get install libappindicator1 " + " && sudo dpkg -i /tmp/google-chrome-updates/google-chrome-stable_current_amd64.deb " + " && sudo apt-get install google-chrome-stable) " + " >/var/log/google-chrome-stable_current_amd641.log 2>&1 " ); } ``` 3\. ```shell account = secretStore.getAccount("soffid.org-ldap"); debug("Account = "+account); u.setAttribute("value", account); password = secretStore.getPassword("soffid.org-ldap", account); debug("Password = "+password); p.setAttribute("value", password); sleep(100); debug("Clicking"); b.click(); debug("Clicked"); ```