Package net.thucydides.core.annotations.locators

Source Code of net.thucydides.core.annotations.locators.SmartElementProxyCreator

package net.thucydides.core.annotations.locators;

import net.thucydides.core.guice.Injectors;
import net.thucydides.core.pages.PageObject;
import net.thucydides.core.webdriver.Configuration;
import net.thucydides.core.webdriver.ElementLocatorFactorySelector;
import net.thucydides.core.webdriver.ElementProxyCreator;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.support.PageFactory;
import org.openqa.selenium.support.pagefactory.ElementLocatorFactory;
import org.openqa.selenium.support.pagefactory.FieldDecorator;

public class SmartElementProxyCreator implements ElementProxyCreator {

  @Override
  public void proxyElements(PageObject pageObject, WebDriver driver) {
    ElementLocatorFactory finder = getElementLocatorFactorySelector().getLocatorFor(driver);
        FieldDecorator decorator = new SmartFieldDecorator(finder, driver, pageObject);
        PageFactory.initElements(decorator, pageObject);

  }

  @Override
  public void proxyElements(PageObject pageObject, WebDriver driver, int timeoutInSeconds) {
    ElementLocatorFactory finder = getElementLocatorFactorySelector().withTimeout(timeoutInSeconds).getLocatorFor(driver);
        FieldDecorator decorator = new SmartFieldDecorator(finder, driver, pageObject);
        PageFactory.initElements(decorator, pageObject);

  }
 
  private ElementLocatorFactorySelector getElementLocatorFactorySelector() {
      Configuration configuration = Injectors.getInjector().getInstance(Configuration.class);
      return new ElementLocatorFactorySelector(configuration);
  }

}
TOP

Related Classes of net.thucydides.core.annotations.locators.SmartElementProxyCreator

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.