[
https://issues.jboss.org/browse/ARQGRA-279?page=com.atlassian.jira.plugin...
]
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