[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