package com.smash.revolance.ui.materials.mock.webdriver;
/*
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
* Revolance-UI-Materials-Mock-Webdriver-Commons
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
* Copyright (C) 2012 - 2013 RevoLance
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public
* License along with this program. If not, see
* <http://www.gnu.org/licenses/gpl-3.0.html>.
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
*/
import org.codehaus.jackson.annotate.JsonAutoDetect;
import org.codehaus.jackson.map.annotate.JsonDeserialize;
import org.openqa.selenium.Dimension;
import org.openqa.selenium.Point;
import java.util.ArrayList;
import java.util.List;
/**
* User: wsmash
* Date: 03/10/13
* Time: 21:57
*/
@JsonAutoDetect(fieldVisibility = JsonAutoDetect.Visibility.ANY,
getterVisibility = JsonAutoDetect.Visibility.NONE,
isGetterVisibility = JsonAutoDetect.Visibility.NONE)
public class MockedWebPage
{
private int h, w;
private String url = "";
private String title = "";
private String caption = "";
@JsonDeserialize(contentAs = MockedWebElement.class, as = ArrayList.class)
private List<MockedWebElement> content = new ArrayList<MockedWebElement>();
public void setCaption(String caption)
{
this.caption = caption;
}
public String getCaption()
{
return caption;
}
public void setH(int h)
{
this.h = h;
}
public int getH()
{
return h;
}
public void setW(int w)
{
this.w = w;
}
public int getW()
{
return w;
}
public void setUrl(String url)
{
this.url = url;
}
public String getUrl()
{
return url;
}
public String getTitle()
{
return title;
}
public void setTitle(String title)
{
this.title = title;
}
public void setContent(List<MockedWebElement> content) throws Exception
{
this.content = content;
}
public List<MockedWebElement> getContent()
{
return content;
}
public List<String> findElements(String xpath)
{
List<String> elements = new ArrayList<String>();
for ( MockedWebElement e : content )
{
elements.add( e.getInternalId() );
}
return elements;
}
private MockedWebElement getElement(String elementId)
{
for ( MockedWebElement e : content )
{
if ( e.getInternalId().contentEquals( elementId ) )
{
return e;
}
}
return null;
}
public Point getElementLocation(String elementId)
{
MockedWebElement element = getElement( elementId );
return new Point( element.getX(), element.getY() );
}
public Dimension getElementSize(String elementId)
{
MockedWebElement element = getElement( elementId );
return new Dimension( element.getH(), element.getW() );
}
public String getElementTag(String elementId)
{
MockedWebElement element = getElement( elementId );
return element.getTag();
}
public String getElementText(String elementId)
{
MockedWebElement element = getElement( elementId );
return element.getText();
}
public String getElementAttribute(String elementId, String attr)
{
MockedWebElement element = getElement( elementId );
if ( attr.contentEquals( "class" ) )
{
return element.getClazz();
}
if ( attr.contentEquals( "href" ) )
{
return element.getHref();
}
if ( attr.contentEquals( "type" ) )
{
return element.getType();
}
return "";
}
public boolean isElementDisplayed(String elementId)
{
return getElement( elementId ).isDisplayed();
}
public String getCssAttribute(String elementId, String cssAttribute)
{
if ( cssAttribute.contentEquals( "background-image" ) )
{
return getElement( elementId ).getBg();
}
return "none";
}
}