Java 类org.openqa.selenium.support.How 实例源码

项目:grafaces    文件:GrafacesContext.java   
public void initializePageFragment(Object childObject, WebElement childRoot, Object parentObject) {
    if (!hasPropertyFor(Root.class, childObject)) {
        fail("No property annotated with @Root in class " + childObject.getClass());
    }
    setInstanceOf(Root.class, childObject, childRoot);

    if (hasPropertyFor(Drone.class, childObject)) {
        WebDriver driver = getInstanceOf(Drone.class, parentObject, WebDriver.class);
        // FIXME when driver == null
                /*
                if (grapheneContext == null) {
            grapheneContext = GrapheneContext.getContextFor(ReflectionHelper.getQualifier(field.getAnnotations()));
        }
        grapheneContext.getWebDriver(xx.class) where xx is the class type of the field where annotation was placed on
       */
        setInstanceOf(Drone.class, childObject, driver);
    }


    try {
        List<Field> fields = ReflectionHelper.getFieldsWithAnnotation(childObject.getClass(), FindBy.class);
        for (Field field : fields) {
            By by = FindByUtilities.getCorrectBy(field, How.ID_OR_NAME);
            // WebElement
            if (field.getType().isAssignableFrom(WebElement.class)) {

                WebElement element = childRoot.findElement(by);
                ReflectionUtil.setValue(field, childObject, element);
                // List<WebElement>
            } else if (field.getType().isAssignableFrom(List.class) && getListType(field)
                    .isAssignableFrom(WebElement.class)) {
                List<WebElement> elements = childRoot.findElements(by);
                ReflectionUtil.setValue(field, childObject, elements);
            }

        }
    } catch (ClassNotFoundException e) {
        e.printStackTrace();
    }

    if (hasPropertyFor(Grafaces.class, childObject)) {
        setInstanceOf(Grafaces.class, childObject, this);
    }

    executeMethodsOfType(PostConstruct.class, childObject);
}