diff --git a/XCTWebDriverAgentLib/Commands/FBFindElementCommands.m b/XCTWebDriverAgentLib/Commands/FBFindElementCommands.m index 353a2a757..c5472e04c 100644 --- a/XCTWebDriverAgentLib/Commands/FBFindElementCommands.m +++ b/XCTWebDriverAgentLib/Commands/FBFindElementCommands.m @@ -149,6 +149,8 @@ + (NSArray *)elementsUsing:(NSString *)usingText withValue:(NSString *)value und elements = [self descendantsOfElement:element withClassName:value]; } else if ([usingText isEqualToString:@"xpath"]) { elements = [self descendantsOfElement:element withXPathQuery:value]; + } else if ([usingText isEqualToString:@"predicate string"]) { + elements = [self descendantsOfElement:element withPredicateString:value]; } else if (isSearchByIdentifier) { elements = [self descendantsOfElement:element withIdentifier:value]; } else { @@ -206,6 +208,13 @@ + (void)descendantsOfElement:(XCUIElement *)element withProperty:(NSString *)pro [results addObjectsFromArray:childElements]; } +#pragma mark - Search by Predicate String ++ (NSArray *)descendantsOfElement:(XCUIElement *)element withPredicateString:(NSString *)predicateString { + XCUIElementQuery *query = [[element descendantsMatchingType:XCUIElementTypeAny] matchingPredicate:[NSPredicate predicateWithFormat:predicateString]]; + NSArray *childElements = [query allElementsBoundByIndex]; + return childElements; +} + #pragma mark - Search by xpath