diff --git a/src/main/java/ru/colibri/ui/settings/ios/IOSByFactory.java b/src/main/java/ru/colibri/ui/settings/ios/IOSByFactory.java index 7d16f6a..6817dd7 100644 --- a/src/main/java/ru/colibri/ui/settings/ios/IOSByFactory.java +++ b/src/main/java/ru/colibri/ui/settings/ios/IOSByFactory.java @@ -12,21 +12,25 @@ @Component public class IOSByFactory extends ByFactory { - private static String XPATH_TEMPLATE = "//*[contains(@name,'%1$s') or contains(@value,'%1$s') or contains(@label,'%1$s')]"; - + private static String IOSNSPREDICATE_TEMPLATE = "name contains'%1$s' or value contains '%1$s' or label contains '%1$s'"; + private String XPATH_TEMPLATE = "//*[contains(@name,'%1$s') or contains(@value,'%1$s') or contains(@label,'%1$s')]"; public By byNameOrValueOrLabel(String label) { - return By.xpath(createXPathByNameOrValueOrLabel(label)); + return byIOSNSPredicate(createIOSNSPredicateByNameOrValueOrLabel(label)); } private String createXPathByNameOrValueOrLabel(String label) { return format(XPATH_TEMPLATE, label); } + private String createIOSNSPredicateByNameOrValueOrLabel(String label) { + return format(IOSNSPREDICATE_TEMPLATE, label); + } + @Override public By byElement(IElement element) { if (!TextUtils.isEmpty(element.getNSPredicate())) { - return MobileBy.iOSNsPredicateString(element.getNSPredicate()); + return byIOSNSPredicate(element.getNSPredicate()); } if (TextUtils.isEmpty(element.getXpath())) { if (TextUtils.isEmpty(element.getId())) { @@ -54,4 +58,8 @@ private String createSearchXpath(IElement element) { } } } + + public MobileBy byIOSNSPredicate(String predicate) { + return (MobileBy) MobileBy.iOSNsPredicateString(predicate); + } } diff --git a/src/test/java/ru/colibri/ui/settings/ios/TestIOSByFactory.java b/src/test/java/ru/colibri/ui/settings/ios/TestIOSByFactory.java index 0c879bd..014a00d 100644 --- a/src/test/java/ru/colibri/ui/settings/ios/TestIOSByFactory.java +++ b/src/test/java/ru/colibri/ui/settings/ios/TestIOSByFactory.java @@ -13,6 +13,7 @@ public class TestIOSByFactory { private IOSByFactory byFactory = new IOSByFactory(); private String XPATH_TEMPLATE = "//*[contains(@name,'%1$s') or contains(@value,'%1$s') or contains(@label,'%1$s')]"; + private String IOSNSPREDICATE_TEMPLATE = "name contains'%1$s' or value contains '%1$s' or label contains '%1$s'"; @Test public void testByID() { @@ -32,8 +33,8 @@ public void testByText() { .withName("elementByText") .withText("visibleText") .please(); - String xpath = format(XPATH_TEMPLATE, element.getText()); - By expected = By.xpath(xpath); + String predicate = format(IOSNSPREDICATE_TEMPLATE, element.getText()); + MobileBy expected = (MobileBy) MobileBy.iOSNsPredicateString(predicate); By byElementFromFactory = byFactory.byElement(element); Assert.assertEquals("Результат работы IOSFactory по text некорректен", expected, byElementFromFactory);