Package io.github.jspinak.brobot.action.composite.multiple.finds
package io.github.jspinak.brobot.action.composite.multiple.finds
Advanced find operations with multiple strategies and hierarchical searching.
This package extends the basic find capabilities with sophisticated multi-find operations including nested searches, confirmed finds, and batch pattern matching. These advanced find operations enable complex visual search scenarios that go beyond simple pattern matching.
Key Classes
-
invalid reference
io.github.jspinak.brobot.action.composite.multiple.finds.MultipleFinds
NestedFinds
- Find patterns within previously found regions-
invalid reference
io.github.jspinak.brobot.action.composite.multiple.finds.ConfirmedFinds
Advanced Find Patterns
Hierarchical Searching
Search for elements within specific containers:
- Find buttons within dialog boxes
- Locate items within list containers
- Search text within specific regions
- Nested pattern matching
Multi-Strategy Searching
Apply different find strategies to the same targets:
- Try BEST first, then ALL if needed
- Combine image and text searching
- Use motion detection as fallback
- Apply different similarity thresholds
Verified Matching
Ensure found elements meet additional criteria:
- Verify surrounding context
- Check element state or appearance
- Confirm stability over time
- Validate against expected properties
Use Cases
- Complex UI Navigation - Find elements in dynamic layouts
- Data Extraction - Locate and extract structured information
- State Verification - Confirm multiple UI elements are present
- Adaptive Searching - Adjust strategies based on results
- Performance Optimization - Search only within relevant areas
Example Usage
// Nested find - find buttons within a dialog
NestedFinds nestedFind = new NestedFinds(...);
// First find the dialog
ObjectCollection dialogTarget = new ObjectCollection.Builder()
.withImages("dialog_box.png")
.build();
// Then find buttons within the dialog
ObjectCollection buttonTargets = new ObjectCollection.Builder()
.withImages("ok_button.png", "cancel_button.png")
.build();
ActionResult nestedResult = nestedFind.findInside(
dialogTarget,
buttonTargets
);
// Multiple find strategies
MultipleFinds multiFind = new MultipleFinds(...);
// Define different strategies to try
List<ActionConfig> strategies = Arrays.asList(
new ActionConfig.Builder()
.setFind(Find.BEST)
.setSimilarity(0.95)
.build(),
new ActionConfig.Builder()
.setFind(Find.ALL)
.setSimilarity(0.85)
.build(),
new ActionConfig.Builder()
.setFind(Find.COLOR)
.build()
);
ObjectCollection targets = new ObjectCollection.Builder()
.withImages("dynamic_element.png")
.build();
ActionResult multiResult = multiFind.perform(strategies, targets);
// Confirmed find - verify found elements
ConfirmedFinds confirmedFind = new ConfirmedFinds(...);
// Find with confirmation criteria
ActionConfig confirmOptions = new ActionConfig.Builder()
.setFind(Find.ALL)
.setConfirmationImage("checked_state.png")
.setConfirmationTimeout(2.0)
.build();
ActionResult confirmedResult = confirmedFind.perform(
confirmOptions,
new ObjectCollection.Builder()
.withImages("checkbox.png")
.build()
);
// Process only confirmed matches
for (Match match : confirmedResult.getMatches()) {
if (match.isConfirmed()) {
// Process confirmed checkbox
}
}
Performance Considerations
- Region Constraints - Narrow search areas for faster results
- Strategy Ordering - Try fastest strategies first
- Caching - Reuse results when possible
- Early Termination - Stop when sufficient matches found
- Parallel Execution - Run independent searches concurrently
Best Practices
- Use nested finds to reduce search space
- Apply confirmation only when necessary
- Order strategies by likelihood of success
- Set appropriate timeouts for each strategy
- Log strategy performance for optimization
- Consider memory usage with large result sets
- See Also:
-
ClassesClassDescriptionModern implementation of nested finds using action chaining.Configuration for nested find operations.Builder for constructing NestedFindsOptions with a fluent API.