001/*
002 * (C) Copyright 2013 Nuxeo SA (http://nuxeo.com/) and others.
003 *
004 * All rights reserved. This program and the accompanying materials
005 * are made available under the terms of the GNU Lesser General Public License
006 * (LGPL) version 2.1 which accompanies this distribution, and is available at
007 * http://www.gnu.org/licenses/lgpl-2.1.html
008 *
009 * This library is distributed in the hope that it will be useful,
010 * but WITHOUT ANY WARRANTY; without even the implied warranty of
011 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
012 * Lesser General Public License for more details.
013 *
014 * Contributors:
015 *     Thomas Roger
016 */
017
018package org.nuxeo.functionaltests.fragment;
019
020import static org.junit.Assert.assertFalse;
021import static org.junit.Assert.assertTrue;
022
023import java.util.List;
024
025import org.nuxeo.functionaltests.AbstractTest;
026import org.nuxeo.functionaltests.Locator;
027import org.openqa.selenium.By;
028import org.openqa.selenium.Dimension;
029import org.openqa.selenium.Point;
030import org.openqa.selenium.WebDriver;
031import org.openqa.selenium.WebElement;
032
033/**
034 * Wraps a {@link org.openqa.selenium.WebElement} and delegates all method calls to the underlying
035 * {@link org.openqa.selenium.WebElement}.
036 *
037 * @since 5.7.3
038 */
039public class WebFragmentImpl implements WebFragment {
040
041    protected final WebDriver driver;
042
043    protected String id;
044
045    protected WebElement element;
046
047    public WebFragmentImpl(WebDriver driver, WebElement element) {
048        this.driver = driver;
049        this.element = element;
050        id = element.getAttribute("id");
051    }
052
053    @Override
054    public String getId() {
055        return id;
056    }
057
058    @Override
059    public WebElement getElement() {
060        return element;
061    }
062
063    @Override
064    public void setElement(WebElement element) {
065        this.element = element;
066        id = element.getAttribute("id");
067    }
068
069    @Override
070    public void click() {
071        element.click();
072    }
073
074    @Override
075    public void submit() {
076        element.submit();
077    }
078
079    @Override
080    public void sendKeys(CharSequence... keysToSend) {
081        element.sendKeys(keysToSend);
082    }
083
084    @Override
085    public void clear() {
086        element.clear();
087    }
088
089    @Override
090    public String getTagName() {
091        return element.getTagName();
092    }
093
094    @Override
095    public String getAttribute(String name) {
096        return element.getAttribute(name);
097    }
098
099    @Override
100    public boolean isSelected() {
101        return element.isSelected();
102    }
103
104    @Override
105    public boolean isEnabled() {
106        return element.isEnabled();
107    }
108
109    @Override
110    public String getText() {
111        return element.getText();
112    }
113
114    @Override
115    public List<WebElement> findElements(By by) {
116        return element.findElements(by);
117    }
118
119    @Override
120    public WebElement findElement(By by) {
121        return element.findElement(by);
122    }
123
124    @Override
125    public boolean isDisplayed() {
126        return element.isDisplayed();
127    }
128
129    @Override
130    public Point getLocation() {
131        return element.getLocation();
132    }
133
134    @Override
135    public Dimension getSize() {
136        return element.getSize();
137    }
138
139    @Override
140    public String getCssValue(String propertyName) {
141        return element.getCssValue(propertyName);
142    }
143
144    @Override
145    public <T extends WebFragment> T getWebFragment(By by, Class<T> webFragmentClass) {
146        return AbstractTest.getWebFragment(by, webFragmentClass);
147    }
148
149    @Override
150    public <T extends WebFragment> T getWebFragment(WebElement element, Class<T> webFragmentClass) {
151        return AbstractTest.getWebFragment(element, webFragmentClass);
152    }
153
154    @Override
155    public boolean containsText(String text) {
156        return element.getText().contains(text);
157    }
158
159    @Override
160    public void waitForTextToBePresent(String text) {
161        Locator.waitForTextPresent(element, text);
162    }
163
164    @Override
165    public void checkTextToBePresent(String text) {
166        assertTrue(element.getText().contains(text));
167    }
168
169    @Override
170    public void checkTextToBeNotPresent(String text) {
171        assertFalse(element.getText().contains(text));
172    }
173}