From d0cd05176e6d0562d08eb689959abde6ea251121 Mon Sep 17 00:00:00 2001 From: "volodymyr.vashchuk" Date: Fri, 13 Sep 2019 13:20:29 +0200 Subject: [PATCH 1/6] Change a couple of dialog fields locators so that it's possible to handle the List Component --- .../component/dialog/dialogfields/DefaultMultifield.java | 6 +++--- .../component/dialog/dialogfields/DefaultPathBrowser.java | 7 ++++--- .../aem/core/component/dialog/dialogfields/Locators.java | 5 +++++ 3 files changed, 12 insertions(+), 6 deletions(-) diff --git a/bb-aem-65/src/main/java/com/cognifide/qa/bb/aem/core/component/dialog/dialogfields/DefaultMultifield.java b/bb-aem-65/src/main/java/com/cognifide/qa/bb/aem/core/component/dialog/dialogfields/DefaultMultifield.java index 61324d11..b7145873 100644 --- a/bb-aem-65/src/main/java/com/cognifide/qa/bb/aem/core/component/dialog/dialogfields/DefaultMultifield.java +++ b/bb-aem-65/src/main/java/com/cognifide/qa/bb/aem/core/component/dialog/dialogfields/DefaultMultifield.java @@ -36,16 +36,16 @@ /** * Default implementation of {@link Multifield} */ -@PageObject(css = Locators.FIELD_WRAPPER_CSS) +@PageObject(css = Locators.MULTIFIELD_CSS) public class DefaultMultifield implements Multifield { - @FindBy(css = "button.coral3-Button.coral3-Button--secondary") + @FindBy(css = "* button[coral-multifield-add]") private WebElement addButton; @FindPageObject private List items; - @FindBy(css = Locators.LABEL_CSS) + @FindBy(xpath = Locators.MULTIFIELD_LABEL_XPATH) private List label; @Override diff --git a/bb-aem-65/src/main/java/com/cognifide/qa/bb/aem/core/component/dialog/dialogfields/DefaultPathBrowser.java b/bb-aem-65/src/main/java/com/cognifide/qa/bb/aem/core/component/dialog/dialogfields/DefaultPathBrowser.java index cdc724fc..c657b79b 100644 --- a/bb-aem-65/src/main/java/com/cognifide/qa/bb/aem/core/component/dialog/dialogfields/DefaultPathBrowser.java +++ b/bb-aem-65/src/main/java/com/cognifide/qa/bb/aem/core/component/dialog/dialogfields/DefaultPathBrowser.java @@ -24,6 +24,7 @@ import java.util.List; import org.openqa.selenium.By; +import org.openqa.selenium.Keys; import org.openqa.selenium.WebElement; import org.openqa.selenium.support.FindBy; @@ -34,13 +35,13 @@ /** * Default implementation of {@link PathBrowser} */ -@PageObject(css = Locators.FIELD_WRAPPER_CSS) +@PageObject(css = Locators.PATHBROWSER_CSS) public class DefaultPathBrowser implements PathBrowser { @FindBy(className = "coral3-Textfield") private WebElement input; - @FindBy(css = Locators.LABEL_CSS) + @FindBy(xpath = Locators.PATHBROWSER_LABEL_XPATH) private List label; @Inject @@ -53,7 +54,7 @@ public void setValue(Object value) { bobcatWait.until(visibilityOfElementLocated( By.cssSelector(".foundation-picker-buttonlist.coral3-Overlay.is-open"))); - label.get(0).click(); + input.sendKeys(Keys.ENTER); } @Override diff --git a/bb-aem-65/src/main/java/com/cognifide/qa/bb/aem/core/component/dialog/dialogfields/Locators.java b/bb-aem-65/src/main/java/com/cognifide/qa/bb/aem/core/component/dialog/dialogfields/Locators.java index a66d8ac9..8b81a169 100644 --- a/bb-aem-65/src/main/java/com/cognifide/qa/bb/aem/core/component/dialog/dialogfields/Locators.java +++ b/bb-aem-65/src/main/java/com/cognifide/qa/bb/aem/core/component/dialog/dialogfields/Locators.java @@ -23,10 +23,15 @@ * Contains common locators related to dialog fields */ public class Locators { + private Locators() { //util } public static final String FIELD_WRAPPER_CSS = ".coral-Form-fieldwrapper"; public static final String LABEL_CSS = ".coral-Form-fieldlabel"; + public static final String MULTIFIELD_CSS = "coral-multifield"; + public static final String MULTIFIELD_LABEL_XPATH = "../label"; + public static final String PATHBROWSER_CSS = "foundation-autocomplete"; + public static final String PATHBROWSER_LABEL_XPATH = "../label"; } From e8b153a9a9281a088d54b068c6dabb62651d64d2 Mon Sep 17 00:00:00 2001 From: "volodymyr.vashchuk" Date: Fri, 13 Sep 2019 17:05:43 +0200 Subject: [PATCH 2/6] Add Tag Browser dialog field MVP implementation --- .../dialogfields/DefaultMultifield.java | 2 +- .../dialogfields/DefaultPathBrowser.java | 16 ++--- .../dialogfields/DefaultTagBrowser.java | 70 +++++++++++++++++++ .../component/dialog/dialogfields/Fields.java | 2 + .../dialog/dialogfields/Locators.java | 5 +- .../modules/fields/FieldsRegistryModule.java | 3 + .../dialog/dialogfields/TagBrowser.java | 30 ++++++++ 7 files changed, 116 insertions(+), 12 deletions(-) create mode 100644 bb-aem-65/src/main/java/com/cognifide/qa/bb/aem/core/component/dialog/dialogfields/DefaultTagBrowser.java create mode 100644 bb-aem-core/src/main/java/com/cognifide/qa/bb/aem/core/component/dialog/dialogfields/TagBrowser.java diff --git a/bb-aem-65/src/main/java/com/cognifide/qa/bb/aem/core/component/dialog/dialogfields/DefaultMultifield.java b/bb-aem-65/src/main/java/com/cognifide/qa/bb/aem/core/component/dialog/dialogfields/DefaultMultifield.java index b7145873..ae26de02 100644 --- a/bb-aem-65/src/main/java/com/cognifide/qa/bb/aem/core/component/dialog/dialogfields/DefaultMultifield.java +++ b/bb-aem-65/src/main/java/com/cognifide/qa/bb/aem/core/component/dialog/dialogfields/DefaultMultifield.java @@ -45,7 +45,7 @@ public class DefaultMultifield implements Multifield { @FindPageObject private List items; - @FindBy(xpath = Locators.MULTIFIELD_LABEL_XPATH) + @FindBy(xpath = Locators.ALTERNATE_LABEL_XPATH) private List label; @Override diff --git a/bb-aem-65/src/main/java/com/cognifide/qa/bb/aem/core/component/dialog/dialogfields/DefaultPathBrowser.java b/bb-aem-65/src/main/java/com/cognifide/qa/bb/aem/core/component/dialog/dialogfields/DefaultPathBrowser.java index c657b79b..b9a8abaa 100644 --- a/bb-aem-65/src/main/java/com/cognifide/qa/bb/aem/core/component/dialog/dialogfields/DefaultPathBrowser.java +++ b/bb-aem-65/src/main/java/com/cognifide/qa/bb/aem/core/component/dialog/dialogfields/DefaultPathBrowser.java @@ -19,12 +19,10 @@ */ package com.cognifide.qa.bb.aem.core.component.dialog.dialogfields; -import static org.openqa.selenium.support.ui.ExpectedConditions.visibilityOfElementLocated; +import static org.openqa.selenium.support.ui.ExpectedConditions.elementToBeClickable; import java.util.List; -import org.openqa.selenium.By; -import org.openqa.selenium.Keys; import org.openqa.selenium.WebElement; import org.openqa.selenium.support.FindBy; @@ -35,15 +33,18 @@ /** * Default implementation of {@link PathBrowser} */ -@PageObject(css = Locators.PATHBROWSER_CSS) +@PageObject(css = Locators.AUTOCOMPLETE_CSS) public class DefaultPathBrowser implements PathBrowser { @FindBy(className = "coral3-Textfield") private WebElement input; - @FindBy(xpath = Locators.PATHBROWSER_LABEL_XPATH) + @FindBy(xpath = Locators.ALTERNATE_LABEL_XPATH) private List label; + @FindBy(css = ".foundation-picker-buttonlist.coral3-Overlay.is-open") + private WebElement firstResult; + @Inject private BobcatWait bobcatWait; @@ -52,9 +53,8 @@ public void setValue(Object value) { input.clear(); input.sendKeys(String.valueOf(value)); - bobcatWait.until(visibilityOfElementLocated( - By.cssSelector(".foundation-picker-buttonlist.coral3-Overlay.is-open"))); - input.sendKeys(Keys.ENTER); + bobcatWait.until(elementToBeClickable(firstResult)); + firstResult.click(); } @Override diff --git a/bb-aem-65/src/main/java/com/cognifide/qa/bb/aem/core/component/dialog/dialogfields/DefaultTagBrowser.java b/bb-aem-65/src/main/java/com/cognifide/qa/bb/aem/core/component/dialog/dialogfields/DefaultTagBrowser.java new file mode 100644 index 00000000..9849258b --- /dev/null +++ b/bb-aem-65/src/main/java/com/cognifide/qa/bb/aem/core/component/dialog/dialogfields/DefaultTagBrowser.java @@ -0,0 +1,70 @@ +/*- + * #%L + * Bobcat + * %% + * Copyright (C) 2016 Cognifide Ltd. + * %% + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * #L% + */ +package com.cognifide.qa.bb.aem.core.component.dialog.dialogfields; + +import static org.openqa.selenium.support.ui.ExpectedConditions.elementToBeClickable; + +import java.util.List; + +import org.openqa.selenium.Keys; +import org.openqa.selenium.WebElement; +import org.openqa.selenium.support.FindBy; + +import com.cognifide.qa.bb.qualifier.PageObject; +import com.cognifide.qa.bb.wait.BobcatWait; +import com.google.inject.Inject; + +/** + * Default implementation of {@link TagBrowser} + */ +@PageObject(css = Locators.AUTOCOMPLETE_CSS) +public class DefaultTagBrowser implements TagBrowser { + + @FindBy(className = "coral3-Textfield") + private WebElement input; + + @FindBy(xpath = Locators.ALTERNATE_LABEL_XPATH) + private List label; + + @FindBy(css = ".coral3-Tag-removeButton") + private List removeTagButtons; + + @FindBy(css = ".foundation-picker-buttonlist.coral3-Overlay.is-open") + private WebElement firstResult; + + @Inject + private BobcatWait bobcatWait; + + @Override + public void setValue(Object value) { + removeTagButtons.forEach((element) -> element.sendKeys(Keys.ENTER)); + + input.clear(); + input.sendKeys(String.valueOf(value)); + + bobcatWait.until(elementToBeClickable(firstResult)); + firstResult.click(); + } + + @Override + public String getLabel() { + return label.isEmpty() ? "" : label.get(0).getText(); + } +} diff --git a/bb-aem-65/src/main/java/com/cognifide/qa/bb/aem/core/component/dialog/dialogfields/Fields.java b/bb-aem-65/src/main/java/com/cognifide/qa/bb/aem/core/component/dialog/dialogfields/Fields.java index f47ffb26..6733678c 100644 --- a/bb-aem-65/src/main/java/com/cognifide/qa/bb/aem/core/component/dialog/dialogfields/Fields.java +++ b/bb-aem-65/src/main/java/com/cognifide/qa/bb/aem/core/component/dialog/dialogfields/Fields.java @@ -23,6 +23,7 @@ * This class contains names of all available field types. */ public class Fields { + public static final String CHECKBOX = "CHECKBOX"; public static final String IMAGE = "IMAGE"; public static final String PATHBROWSER = "PATHBROWSER"; @@ -32,6 +33,7 @@ public class Fields { public static final String MULTIFIELD_ITEM = "MULTIFIELD_ITEM"; public static final String RADIO_GROUP = "RADIO_GROUP"; public static final String RICHTEXT = "RICHTEXT"; + public static final String TAGBROWSER = "TAGBROWSER"; private Fields() { //empty diff --git a/bb-aem-65/src/main/java/com/cognifide/qa/bb/aem/core/component/dialog/dialogfields/Locators.java b/bb-aem-65/src/main/java/com/cognifide/qa/bb/aem/core/component/dialog/dialogfields/Locators.java index 8b81a169..cdf0185e 100644 --- a/bb-aem-65/src/main/java/com/cognifide/qa/bb/aem/core/component/dialog/dialogfields/Locators.java +++ b/bb-aem-65/src/main/java/com/cognifide/qa/bb/aem/core/component/dialog/dialogfields/Locators.java @@ -31,7 +31,6 @@ private Locators() { public static final String FIELD_WRAPPER_CSS = ".coral-Form-fieldwrapper"; public static final String LABEL_CSS = ".coral-Form-fieldlabel"; public static final String MULTIFIELD_CSS = "coral-multifield"; - public static final String MULTIFIELD_LABEL_XPATH = "../label"; - public static final String PATHBROWSER_CSS = "foundation-autocomplete"; - public static final String PATHBROWSER_LABEL_XPATH = "../label"; + public static final String AUTOCOMPLETE_CSS = "foundation-autocomplete"; + public static final String ALTERNATE_LABEL_XPATH = "../label"; } diff --git a/bb-aem-65/src/main/java/com/cognifide/qa/bb/aem/core/modules/fields/FieldsRegistryModule.java b/bb-aem-65/src/main/java/com/cognifide/qa/bb/aem/core/modules/fields/FieldsRegistryModule.java index 35e7c0a7..15c7d12b 100644 --- a/bb-aem-65/src/main/java/com/cognifide/qa/bb/aem/core/modules/fields/FieldsRegistryModule.java +++ b/bb-aem-65/src/main/java/com/cognifide/qa/bb/aem/core/modules/fields/FieldsRegistryModule.java @@ -30,6 +30,7 @@ import com.cognifide.qa.bb.aem.core.component.dialog.dialogfields.DefaultRadioGroup; import com.cognifide.qa.bb.aem.core.component.dialog.dialogfields.DefaultRichText; import com.cognifide.qa.bb.aem.core.component.dialog.dialogfields.DefaultSelect; +import com.cognifide.qa.bb.aem.core.component.dialog.dialogfields.DefaultTagBrowser; import com.cognifide.qa.bb.aem.core.component.dialog.dialogfields.DefaultTextfield; import com.cognifide.qa.bb.aem.core.component.dialog.dialogfields.DialogField; import com.cognifide.qa.bb.aem.core.component.dialog.dialogfields.Fields; @@ -42,6 +43,7 @@ import com.google.inject.multibindings.MapBinder; public class FieldsRegistryModule extends AbstractModule { + private static final Logger LOG = LoggerFactory.getLogger(FieldsRegistryModule.class); @Override @@ -59,6 +61,7 @@ protected void configure() { registerField(fieldsBinder, Fields.MULTIFIELD, DefaultMultifield.class); registerField(fieldsBinder, Fields.MULTIFIELD_ITEM, DefaultMultifieldItem.class); registerField(fieldsBinder, Fields.RADIO_GROUP, DefaultRadioGroup.class); + registerField(fieldsBinder, Fields.TAGBROWSER, DefaultTagBrowser.class); registerField(fieldsBinder, Fields.RICHTEXT, DefaultRichText.class); registerField(fieldsBinder, Options.RTE_OPTIONS, RteOption.class); diff --git a/bb-aem-core/src/main/java/com/cognifide/qa/bb/aem/core/component/dialog/dialogfields/TagBrowser.java b/bb-aem-core/src/main/java/com/cognifide/qa/bb/aem/core/component/dialog/dialogfields/TagBrowser.java new file mode 100644 index 00000000..d9b97249 --- /dev/null +++ b/bb-aem-core/src/main/java/com/cognifide/qa/bb/aem/core/component/dialog/dialogfields/TagBrowser.java @@ -0,0 +1,30 @@ +/*- + * #%L + * Bobcat + * %% + * Copyright (C) 2019 Cognifide Ltd. + * %% + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * #L% + */ +package com.cognifide.qa.bb.aem.core.component.dialog.dialogfields; + +import com.cognifide.qa.bb.qualifier.PageObjectInterface; + +/** + * This class represents tag browser dialog field + */ +@PageObjectInterface +public interface TagBrowser extends DialogField { + +} From badb3a009eab00af4930e15a0f2f39e3db3f8292 Mon Sep 17 00:00:00 2001 From: "volodymyr.vashchuk" Date: Mon, 16 Sep 2019 11:45:32 +0200 Subject: [PATCH 3/6] Add multiple tag handling for TagBrowser --- .../dialog/dialogfields/DefaultTagBrowser.java | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/bb-aem-65/src/main/java/com/cognifide/qa/bb/aem/core/component/dialog/dialogfields/DefaultTagBrowser.java b/bb-aem-65/src/main/java/com/cognifide/qa/bb/aem/core/component/dialog/dialogfields/DefaultTagBrowser.java index 9849258b..166486d4 100644 --- a/bb-aem-65/src/main/java/com/cognifide/qa/bb/aem/core/component/dialog/dialogfields/DefaultTagBrowser.java +++ b/bb-aem-65/src/main/java/com/cognifide/qa/bb/aem/core/component/dialog/dialogfields/DefaultTagBrowser.java @@ -21,6 +21,8 @@ import static org.openqa.selenium.support.ui.ExpectedConditions.elementToBeClickable; +import java.util.ArrayList; +import java.util.Arrays; import java.util.List; import org.openqa.selenium.Keys; @@ -54,13 +56,17 @@ public class DefaultTagBrowser implements TagBrowser { @Override public void setValue(Object value) { - removeTagButtons.forEach((element) -> element.sendKeys(Keys.ENTER)); + List tags = new ArrayList<>( + Arrays.asList(String.valueOf(value).trim().replaceAll("\\[|\\]|\\s", "").split(","))); - input.clear(); - input.sendKeys(String.valueOf(value)); + removeTagButtons.forEach((element) -> element.sendKeys(Keys.ENTER)); - bobcatWait.until(elementToBeClickable(firstResult)); - firstResult.click(); + tags.forEach((tag) -> { + input.clear(); + input.sendKeys(tag); + bobcatWait.until(elementToBeClickable(firstResult)); + firstResult.click(); + }); } @Override From a6d20df59040ae91bc36fc04995a07e7ee50b471 Mon Sep 17 00:00:00 2001 From: "volodymyr.vashchuk" Date: Wed, 18 Sep 2019 13:13:21 +0200 Subject: [PATCH 4/6] Add HttpClient connection releasing - fixes freezing for multiple Sling requests --- .../com/cognifide/qa/bb/aem/core/pages/sling/CreatePage.java | 2 ++ .../com/cognifide/qa/bb/aem/core/pages/sling/DeletePage.java | 2 ++ 2 files changed, 4 insertions(+) diff --git a/bb-aem-65/src/main/java/com/cognifide/qa/bb/aem/core/pages/sling/CreatePage.java b/bb-aem-65/src/main/java/com/cognifide/qa/bb/aem/core/pages/sling/CreatePage.java index 9f4d4037..00dbc7e1 100644 --- a/bb-aem-65/src/main/java/com/cognifide/qa/bb/aem/core/pages/sling/CreatePage.java +++ b/bb-aem-65/src/main/java/com/cognifide/qa/bb/aem/core/pages/sling/CreatePage.java @@ -57,6 +57,8 @@ public void execute(SlingPageData data) throws AemPageManipulationException { httpClient.execute(request); } catch (IOException e) { throw new AemPageManipulationException(e); + } finally { + request.releaseConnection(); } } } diff --git a/bb-aem-65/src/main/java/com/cognifide/qa/bb/aem/core/pages/sling/DeletePage.java b/bb-aem-65/src/main/java/com/cognifide/qa/bb/aem/core/pages/sling/DeletePage.java index 9d88afbe..dabff09a 100644 --- a/bb-aem-65/src/main/java/com/cognifide/qa/bb/aem/core/pages/sling/DeletePage.java +++ b/bb-aem-65/src/main/java/com/cognifide/qa/bb/aem/core/pages/sling/DeletePage.java @@ -57,6 +57,8 @@ public void execute(SlingPageData data) throws AemPageManipulationException { httpClient.execute(request); } catch (IOException e) { throw new AemPageManipulationException(e); + } finally { + request.releaseConnection(); } } } From f031ac38d8def4f8218f3da3fdace12ba5313a60 Mon Sep 17 00:00:00 2001 From: "volodymyr.vashchuk" Date: Wed, 18 Sep 2019 13:30:45 +0200 Subject: [PATCH 5/6] Update Docs to include TAGBROWSER --- docs/_docs/modules/aem/componentconfiguration.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/_docs/modules/aem/componentconfiguration.md b/docs/_docs/modules/aem/componentconfiguration.md index ab17de88..ddecfd55 100644 --- a/docs/_docs/modules/aem/componentconfiguration.md +++ b/docs/_docs/modules/aem/componentconfiguration.md @@ -178,6 +178,7 @@ Version: >= 2.1.0 | PATHBROWSER | path | | SELECT | text from dropdown | | RADIO_GROUP | text from radio option | +| TAGBROWSER | text for each tag to select, each tag is a separate list member of "value" | | MULTIFIELD | list of "item" each with own fields (see example above) | | RICHTEXT | text | | RTE_OPTIONS | simple fields on RTE toolbar, without any sub-options; e.g.: Bold/Underline/Italic/Unlink (just provide the title of the button) | From f5cd193fd55c5fd76a16c88bf343a4e6f838def2 Mon Sep 17 00:00:00 2001 From: "volodymyr.vashchuk" Date: Thu, 19 Sep 2019 17:53:56 +0200 Subject: [PATCH 6/6] Introduce fixes according to CR --- .../component/dialog/dialogfields/DefaultMultifield.java | 2 +- .../dialog/dialogfields/DefaultPathBrowser.java | 5 ++--- .../component/dialog/dialogfields/DefaultTagBrowser.java | 9 ++++----- .../qa/bb/aem/core/pages/sling/PageXMLParserHandler.java | 6 +++++- 4 files changed, 12 insertions(+), 10 deletions(-) diff --git a/bb-aem-65/src/main/java/com/cognifide/qa/bb/aem/core/component/dialog/dialogfields/DefaultMultifield.java b/bb-aem-65/src/main/java/com/cognifide/qa/bb/aem/core/component/dialog/dialogfields/DefaultMultifield.java index ae26de02..ab34e781 100644 --- a/bb-aem-65/src/main/java/com/cognifide/qa/bb/aem/core/component/dialog/dialogfields/DefaultMultifield.java +++ b/bb-aem-65/src/main/java/com/cognifide/qa/bb/aem/core/component/dialog/dialogfields/DefaultMultifield.java @@ -39,7 +39,7 @@ @PageObject(css = Locators.MULTIFIELD_CSS) public class DefaultMultifield implements Multifield { - @FindBy(css = "* button[coral-multifield-add]") + @FindBy(css = "button[coral-multifield-add]") private WebElement addButton; @FindPageObject diff --git a/bb-aem-65/src/main/java/com/cognifide/qa/bb/aem/core/component/dialog/dialogfields/DefaultPathBrowser.java b/bb-aem-65/src/main/java/com/cognifide/qa/bb/aem/core/component/dialog/dialogfields/DefaultPathBrowser.java index b9a8abaa..114f6b21 100644 --- a/bb-aem-65/src/main/java/com/cognifide/qa/bb/aem/core/component/dialog/dialogfields/DefaultPathBrowser.java +++ b/bb-aem-65/src/main/java/com/cognifide/qa/bb/aem/core/component/dialog/dialogfields/DefaultPathBrowser.java @@ -36,7 +36,7 @@ @PageObject(css = Locators.AUTOCOMPLETE_CSS) public class DefaultPathBrowser implements PathBrowser { - @FindBy(className = "coral3-Textfield") + @FindBy(css = ".coral3-Textfield") private WebElement input; @FindBy(xpath = Locators.ALTERNATE_LABEL_XPATH) @@ -53,8 +53,7 @@ public void setValue(Object value) { input.clear(); input.sendKeys(String.valueOf(value)); - bobcatWait.until(elementToBeClickable(firstResult)); - firstResult.click(); + bobcatWait.until(elementToBeClickable(firstResult)).click(); } @Override diff --git a/bb-aem-65/src/main/java/com/cognifide/qa/bb/aem/core/component/dialog/dialogfields/DefaultTagBrowser.java b/bb-aem-65/src/main/java/com/cognifide/qa/bb/aem/core/component/dialog/dialogfields/DefaultTagBrowser.java index 166486d4..7c90d68c 100644 --- a/bb-aem-65/src/main/java/com/cognifide/qa/bb/aem/core/component/dialog/dialogfields/DefaultTagBrowser.java +++ b/bb-aem-65/src/main/java/com/cognifide/qa/bb/aem/core/component/dialog/dialogfields/DefaultTagBrowser.java @@ -39,7 +39,7 @@ @PageObject(css = Locators.AUTOCOMPLETE_CSS) public class DefaultTagBrowser implements TagBrowser { - @FindBy(className = "coral3-Textfield") + @FindBy(css = ".coral3-Textfield") private WebElement input; @FindBy(xpath = Locators.ALTERNATE_LABEL_XPATH) @@ -56,16 +56,15 @@ public class DefaultTagBrowser implements TagBrowser { @Override public void setValue(Object value) { - List tags = new ArrayList<>( - Arrays.asList(String.valueOf(value).trim().replaceAll("\\[|\\]|\\s", "").split(","))); + List tags = Arrays + .asList(String.valueOf(value).trim().replaceAll("\\[|\\]|\\s", "").split(",")); removeTagButtons.forEach((element) -> element.sendKeys(Keys.ENTER)); tags.forEach((tag) -> { input.clear(); input.sendKeys(tag); - bobcatWait.until(elementToBeClickable(firstResult)); - firstResult.click(); + bobcatWait.until(elementToBeClickable(firstResult)).click(); }); } diff --git a/bb-aem-65/src/main/java/com/cognifide/qa/bb/aem/core/pages/sling/PageXMLParserHandler.java b/bb-aem-65/src/main/java/com/cognifide/qa/bb/aem/core/pages/sling/PageXMLParserHandler.java index 4306bc68..7878fc69 100644 --- a/bb-aem-65/src/main/java/com/cognifide/qa/bb/aem/core/pages/sling/PageXMLParserHandler.java +++ b/bb-aem-65/src/main/java/com/cognifide/qa/bb/aem/core/pages/sling/PageXMLParserHandler.java @@ -57,9 +57,13 @@ public void startElement(String uri, String localName, String qName, Attributes if (isIgnoredAttribute(attributeName)) { continue; } + String value = attributes.getValue(attributeName); + if (value.startsWith("[") && value.endsWith("]")) { + value = value.replaceAll("[\\[\\]]", ""); + } parserResults .add(new BasicNameValuePair(entryName.toString() + SEPARATOR + attributeName, - attributes.getValue(attributeName))); + value)); } }