ActionConfig Examples Index
This page provides a comprehensive index of all ActionConfig examples, organized by use case and complexity level.
Quick Start Examples
Basic Actions
Click Examples
// Simple click
ClickOptions click = new ClickOptions.Builder().build();
// Right-click with pause
ClickOptions rightClick = new ClickOptions.Builder()
.setClickType(ClickOptions.ClickType.RIGHT)
.setPauseAfterEnd(0.5)
.build();
// Double-click
ClickOptions doubleClick = new ClickOptions.Builder()
.setClickType(ClickOptions.ClickType.DOUBLE)
.build();
Type Examples
// Basic typing
TypeOptions type = new TypeOptions.Builder()
.setText("Hello World")
.build();
// Typing with delay
TypeOptions slowType = new TypeOptions.Builder()
.setText("Important text")
.setTypeDelay(0.1)
.build();
// Clear and type
TypeOptions clearAndType = new TypeOptions.Builder()
.setText("New text")
.setClearFirst(true)
.build();
Find Examples
// Find first match
PatternFindOptions findFirst = new PatternFindOptions.Builder()
.setStrategy(FindStrategy.FIRST)
.build();
// Find best match with similarity
PatternFindOptions findBest = new PatternFindOptions.Builder()
.setStrategy(FindStrategy.BEST)
.setSimilarity(0.9)
.build();
// Find all matches
PatternFindOptions findAll = new PatternFindOptions.Builder()
.setStrategy(FindStrategy.ALL)
.setPauseBeforeBegin(1.0)
.build();
Action Chaining Examples
Sequential Actions
// Click and type
ActionChainOptions clickAndType = new ActionChainOptions.Builder(
new ClickOptions.Builder().build())
.then(new TypeOptions.Builder()
.setText("Hello")
.build())
.build();
// Multi-step form filling
ActionChainOptions formFill = new ActionChainOptions.Builder(
new ClickOptions.Builder().build())
.then(new TypeOptions.Builder().setText("John").build())
.then(new TypeOptions.Builder().setText("\t").build())
.then(new TypeOptions.Builder().setText("Doe").build())
.build();
Nested Actions
// Find dialog, then find button within
ActionChainOptions nestedFind = new ActionChainOptions.Builder(
new PatternFindOptions.Builder()
.setStrategy(FindStrategy.FIRST)
.build())
.setStrategy(ActionChainOptions.ChainingStrategy.NESTED)
.then(new PatternFindOptions.Builder()
.setStrategy(FindStrategy.FIRST)
.build())
.build();
Conditional Actions
Click Until Examples
// Click until image appears (max 10 clicks)
public boolean clickUntilImageAppears(StateImage button, StateImage target) {
RepeatUntilConfig config = new RepeatUntilConfig.Builder()
.setDoAction(new ClickOptions.Builder()
.setPauseAfterEnd(0.5)
.build())
.setActionObjectCollection(button.asObjectCollection())
.setUntilAction(new PatternFindOptions.Builder()
.setStrategy(FindStrategy.FIRST)
.setPauseBeforeBegin(2.0)
.build())
.setConditionObjectCollection(target.asObjectCollection())
.setMaxActions(10)
.build();
return repeatUntilExecutor.execute(config);
}
Wait Patterns
// Wait for element to vanish
VanishOptions vanish = new VanishOptions.Builder()
.setPauseBeforeBegin(1.0)
.setTimeout(10.0)
.build();
// Wait with custom intervals
public boolean waitForCondition(StateImage element, int maxAttempts) {
for (int i = 0; i < maxAttempts; i++) {
if (find(element)) {
return true;
}
pause(1.0);
}
return false;
}
Complex Workflows
Form Automation
// Complete registration form
public boolean fillRegistrationForm(UserData data) {
return new ActionChainOptions.Builder(
// First name
new ClickOptions.Builder().build())
.then(new TypeOptions.Builder()
.setText(data.getFirstName())
.setClearFirst(true)
.build())
// Last name
.then(new ClickOptions.Builder().build())
.then(new TypeOptions.Builder()
.setText(data.getLastName())
.setClearFirst(true)
.build())
// Email
.then(new ClickOptions.Builder().build())
.then(new TypeOptions.Builder()
.setText(data.getEmail())
.setClearFirst(true)
.build())
// Submit
.then(new ClickOptions.Builder()
.setPauseAfterEnd(1.0)
.build())
.build();
}
Navigation Patterns
// Navigate through menu hierarchy
public boolean navigateToSettings() {
return new ActionChainOptions.Builder(
// Open menu
new ClickOptions.Builder()
.setPauseAfterEnd(0.5)
.build())
// Find settings option
.then(new PatternFindOptions.Builder()
.setStrategy(FindStrategy.FIRST)
.build())
// Click settings
.then(new ClickOptions.Builder()
.setPauseAfterEnd(0.5)
.build())
.build();
}
Reusable Patterns
Pattern Library
// Login pattern
public class LoginPattern implements AutomationPattern {
@Override
public boolean execute(PatternContext context) {
return new ActionChainOptions.Builder(
// Username
new ClickOptions.Builder().build())
.then(new TypeOptions.Builder()
.setText(context.getParameter("username", String.class))
.build())
// Password
.then(new ClickOptions.Builder().build())
.then(new TypeOptions.Builder()
.setText(context.getParameter("password", String.class))
.build())
// Submit
.then(new ClickOptions.Builder().build())
.build();
}
}
Mouse Actions
Drag and Drop
// Using DragOptions
DragOptions drag = new DragOptions.Builder()
.setDragDelay(0.5)
.build();
// Custom drag with chain
ActionChainOptions customDrag = new ActionChainOptions.Builder(
new MouseMoveOptions.Builder().build())
.then(new MouseDownOptions.Builder().build())
.then(new MouseMoveOptions.Builder().build())
.then(new MouseUpOptions.Builder().build())
.build();
Scrolling
// Scroll down
ScrollOptions scrollDown = new ScrollOptions.Builder()
.setDirection(ScrollOptions.Direction.DOWN)
.setScrollSteps(5)
.build();
// Scroll until element visible
public boolean scrollToElement(StateImage element) {
for (int i = 0; i < 10; i++) {
if (find(element)) return true;
scroll(new ScrollOptions.Builder()
.setDirection(ScrollOptions.Direction.DOWN)
.setScrollSteps(3)
.build());
pause(0.5);
}
return false;
}
Keyboard Actions
Shortcuts
// Ctrl+C copy
ActionChainOptions copy = new ActionChainOptions.Builder(
new KeyDownOptions.Builder().setKey("ctrl").build())
.then(new TypeOptions.Builder().setText("c").build())
.then(new KeyUpOptions.Builder().setKey("ctrl").build())
.build();
// Select all and delete
ActionChainOptions selectAllDelete = new ActionChainOptions.Builder(
new KeyDownOptions.Builder().setKey("ctrl").build())
.then(new TypeOptions.Builder().setText("a").build())
.then(new KeyUpOptions.Builder().setKey("ctrl").build())
.then(new TypeOptions.Builder().setText("\b").build())
.build();
Find Strategies
Text Finding
TextFindOptions findText = new TextFindOptions.Builder()
.setMaxMatchRetries(3)
.build();
Color Finding
ColorFindOptions findColor = new ColorFindOptions.Builder()
.setTargetColor(new Color(255, 0, 0))
.setColorTolerance(10)
.build();
Motion Detection
MotionFindOptions findMotion = new MotionFindOptions.Builder()
.setMotionThreshold(0.1)
.build();
Error Handling
Retry Patterns
public boolean performWithRetry(ActionConfig action,
ObjectCollection target,
int maxRetries) {
for (int i = 0; i < maxRetries; i++) {
ActionResult result = perform(action, target);
if (result.isSuccess()) {
return true;
}
logger.warn("Attempt {} failed, retrying...", i + 1);
pause(1.0);
}
return false;
}
Fallback Strategies
public boolean clickWithFallback(StateImage primary,
StateImage fallback) {
// Try primary target
if (click(primary)) {
return true;
}
// Try fallback
logger.info("Primary target failed, trying fallback");
return click(fallback);
}
Performance Optimization
Batch Operations
// Process multiple items efficiently
public void processItems(List<StateImage> items) {
ActionChainOptions.Builder chain = null;
for (StateImage item : items) {
if (chain == null) {
chain = new ActionChainOptions.Builder(
new ClickOptions.Builder().build());
} else {
chain.then(new ClickOptions.Builder().build());
}
}
if (chain != null) {
executeChain(chain.build(), items);
}
}
Migration Examples
Before and After
// Before (ActionOptions)
ActionOptions old = new ActionOptions.Builder()
.setAction(ActionOptions.Action.CLICK)
.setPauseAfterEnd(0.5)
.build();
// After (ActionConfig)
ClickOptions new = new ClickOptions.Builder()
.setPauseAfterEnd(0.5)
.build();
Resources
Contributing Examples
To contribute your own examples:
- Fork the repository
- Add your example to the appropriate section
- Include comments explaining the use case
- Submit a pull request
Happy automating with Brobot!