Run Script
Executes custom JavaScript code in the browser context. Provides full access to the DOM and browser APIs for advanced automation scenarios.
Common Properties
- Name - The custom name of the node.
- Color - The custom color of the node.
- Delay Before (sec) - Waits in seconds before executing the node.
- Delay After (sec) - Waits in seconds after executing the node.
- Continue On Error - Automation will continue regardless of any error. The default value is false.
info
If Continue On Error property is true, no error is caught when the project is executed, even if the Catch node is used.
Input
- Browser ID - The browser session identifier from the Open Browser node.
- Function - JavaScript code to execute in the browser. The code has access to a
msgvariable containing the current message context.
Output
- Result - The return value from the executed JavaScript code. Returns the value of the last expression or explicit return statement.
Examples
Simple Script
Browser ID: {{browser_id}}
Function:
return document.title;
Output: {{script_result}}
Scroll to Bottom
Browser ID: {{browser_id}}
Function:
window.scrollTo(0, document.body.scrollHeight);
return true;
Get All Links
Browser ID: {{browser_id}}
Function:
const links = Array.from(document.querySelectorAll('a'));
return links.map(a => a.href);
Output: {{links_array}}
Access Message Data
Browser ID: {{browser_id}}
Function:
// msg variable contains the message context
const productId = msg.product_id;
const element = document.querySelector(`[data-id="${productId}"]`);
return element ? element.textContent : null;
Output: {{product_name}}
Modify Page Content
Browser ID: {{browser_id}}
Function:
document.querySelector('h1').textContent = 'Modified Title';
return 'Title changed';
Wait for Element with JavaScript
Browser ID: {{browser_id}}
Function:
return new Promise((resolve) => {
const interval = setInterval(() => {
const element = document.querySelector('#dynamic-content');
if (element) {
clearInterval(interval);
resolve(element.textContent);
}
}, 100);
});
Click Hidden Element
Browser ID: {{browser_id}}
Function:
const element = document.querySelector('#hidden-button');
element.click();
return 'Clicked';
JavaScript Context
The script executes in the browser's JavaScript context with access to:
- DOM APIs - document, window, all standard JavaScript
- msg variable - Current message data from the workflow
- return statement - Return values back to the workflow
- Promises - Async operations are supported
Tips
- Use return statement to pass data back to the workflow
- Access workflow data through the
msgvariable - Ideal for operations not available in standard nodes
- Can manipulate page elements directly
- Supports both synchronous and asynchronous code
- Use console.log for debugging (visible in browser console)
- Errors will be caught and reported to the workflow
Common Errors
- "Browser ID cannot be empty" - Connect to an Open Browser node
- "JavaScript execution failed" - Syntax error in the script. Check the error message for details
- "Browser session not found" - Ensure the Open Browser node has run successfully
Related Nodes
- Get Page Source - Get HTML source
- Get Value - Get element values
- Set Value - Set element values
- Click Element - Click elements