diff options
author | elmot <elmot@vaadin.com> | 2016-09-12 17:58:38 +0300 |
---|---|---|
committer | Vaadin Code Review <review@vaadin.com> | 2016-09-13 18:06:18 +0000 |
commit | 37e488d86b0bc59bf085a64eda3e258a01c496f0 (patch) | |
tree | a287284353b4d2c7068c0126ef773c56e0d8700e /uitest-common | |
parent | d0435d5f02f93e3f5123ae54216d0062054cbe90 (diff) | |
download | vaadin-framework-37e488d86b0bc59bf085a64eda3e258a01c496f0.tar.gz vaadin-framework-37e488d86b0bc59bf085a64eda3e258a01c496f0.zip |
Create a CheckBoxGroup that replaces the multi select case of OptionGroup
Change-Id: I250c60741bc65443b66498a8d0b17541edb77bf1
Diffstat (limited to 'uitest-common')
-rw-r--r-- | uitest-common/src/main/java/com/vaadin/testbench/customelements/CheckBoxGroupElement.java | 98 |
1 files changed, 98 insertions, 0 deletions
diff --git a/uitest-common/src/main/java/com/vaadin/testbench/customelements/CheckBoxGroupElement.java b/uitest-common/src/main/java/com/vaadin/testbench/customelements/CheckBoxGroupElement.java new file mode 100644 index 0000000000..b070ece852 --- /dev/null +++ b/uitest-common/src/main/java/com/vaadin/testbench/customelements/CheckBoxGroupElement.java @@ -0,0 +1,98 @@ +/* + * Copyright 2000-2014 Vaadin 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. + */ +package com.vaadin.testbench.customelements; + +import java.util.ArrayList; +import java.util.List; + +import org.openqa.selenium.WebElement; + +import com.vaadin.testbench.By; +import com.vaadin.testbench.elements.AbstractSelectElement; +import com.vaadin.testbench.elementsbase.ServerClass; + +/** + * TestBench element supporting CheckBoxGroup + * + * @author Vaadin Ltd + */ + +@ServerClass("com.vaadin.ui.CheckBoxGroup") +public class CheckBoxGroupElement extends AbstractSelectElement { + private static org.openqa.selenium.By byButtonSpan = + By.className("v-select-option"); + private static org.openqa.selenium.By byLabel = By.tagName("label"); + private static org.openqa.selenium.By byInput = By.tagName("input"); + + public List<String> getOptions() { + List<String> optionTexts = new ArrayList<String>(); + List<WebElement> options = findElements(byButtonSpan); + for (WebElement option : options) { + optionTexts.add(option.findElement(byLabel).getText()); + } + return optionTexts; + } + + public void selectByText(String text) throws ReadOnlyException { + if (isReadOnly()) { + throw new ReadOnlyException(); + } + List<WebElement> options = findElements(byButtonSpan); + for (WebElement option : options) { + if (text.equals(option.findElement(byLabel).getText())) { + option.findElement(byInput).click(); + } + } + } + + /** + * Return list of the selected options in the checkbox group + * + * @return list of the selected options in the checkbox group + */ + public List<String> getSelection() { + List<String> values = new ArrayList<>(); + List<WebElement> options = findElements(byButtonSpan); + for (WebElement option : options) { + WebElement checkedItem; + checkedItem = option.findElement(By.tagName("input")); + String checked = checkedItem.getAttribute("checked"); + if (checked != null && + checkedItem.getAttribute("checked").equals("true")) { + values.add(option.findElement(By.tagName("label")).getText()); + } + } + return values; + } + + /** + * Select option in the checkbox group with the specified value + * + * @param chars + * value of the option in the checkbox group which will be selected + */ + public void selectOption(CharSequence chars) throws ReadOnlyException { + selectByText((String) chars); + } + + @Override + public void clear() { + throw new UnsupportedOperationException( + "Clear operation is not supported for CheckBoxGroup." + + " This operation has no effect on the element."); + } +} + |