[arquillian-issues] [JBoss JIRA] (ARQGRA-279) Support for method Graphene.element(WebElement, By) and its condition isPresent

Sona Jamborova (JIRA) jira-events at lists.jboss.org
Tue Mar 19 11:53:42 EDT 2013


    [ https://issues.jboss.org/browse/ARQGRA-279?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12761869#comment-12761869 ] 

Sona Jamborova commented on ARQGRA-279:
---------------------------------------

My solution:

    public static ElementConditionFactory element(WebElement e, By locator) {
        return new MyElementConditionFactory(e, locator);
    }
-------------

public class MyElementConditionFactory extends AbstractBooleanConditionFactory<ElementConditionFactory> implements ElementConditionFactory {

    private WebElement element;
    private By locator;

    public MyElementConditionFactory(WebElement e, By locator) {
        if (locator == null) {
            throw new IllegalArgumentException("The locator cannot be null!");
        }

        if (e == null) {
            throw new IllegalArgumentException("The element cannot be null!");
        }
        this.element = e;
        this.locator = locator;
    }
    ...
    @Override
    public ExpectedCondition<Boolean> isPresent() {
        return new BooleanConditionWrapper(new ConditionIsLocatorPresentInElement(element, locator), getNegation(), NoSuchElementException.class);
    }

    protected class ConditionIsLocatorPresentInElement implements ExpectedCondition<WebElement> {

        private WebElement e;
        private By locator;

        protected ConditionIsLocatorPresentInElement(WebElement e, By locator) {
            this.e = e;
            this.locator = locator;
        }

        @Override
        public WebElement apply(WebDriver f) {
            return e.findElement(locator);
        }
    }
}


I am not sure how this solution is good for all context of Graphene (multiply proxies and so on). This is just a idea. I think that support this methods is step to transparent and dynamic code which support an idea of PageFragments. Without this method I need remember a absolute locator and then PageFragments are useless.
                
> Support for method Graphene.element(WebElement, By) and its condition isPresent
> -------------------------------------------------------------------------------
>
>                 Key: ARQGRA-279
>                 URL: https://issues.jboss.org/browse/ARQGRA-279
>             Project: Arquillian Graphene
>          Issue Type: Feature Request
>          Components: api
>            Reporter: Sona Jamborova
>
> Please, can you add support for method Graphene.element(WebElement, By) for searching element (located by By) in parent element.
> Motivation:
> A panel which display content of current directory. Operations with this panel are open a file, open a child directory, go back. The content of this panel depends on file system and we use different file system for our test. I need create general framework for our tests. I think about:
> public class Designer {
>    ...
>    @FindBy(jquery = "div.tabbable:contains('Project Explorer')")
>    private ProjectExplorer projExpl;
>    ...
> }
> public class ProjectExplorer {
>    ...
>    @Root
>    private WebElement root;
>    
>    @FindBy(css = "table>tr:first-child() div");
>    private WebElement path;
>    ...
>     
>     public void openFile(String path) {
>         String[] parts = path.split("/");
>         for (String part: parts) {
>             By by = jquerySelector(format("a.gwt-Anchor:contains('%s')", part));
>             waitAjax().until(element(root, by).isPresent());
>             root.findElement(by).click(); //this should be reduce to waitAjax().until(element(root, by).isPresent()).click(); (this is not point of this issue)
>         }
>     }
>     public String getPath () {
>         return path.getText();
>    }
> }

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira


More information about the arquillian-issues mailing list