[
https://issues.jboss.org/browse/ARQGRA-384?page=com.atlassian.jira.plugin...
]
Karel Piwko commented on ARQGRA-384:
------------------------------------
So, it looks like, that now I'm able to reproduce the first problem. Instead of
returning Boolean, it indeed returns RemoteWebElement.
After some debugging, it looks like happens if following conditions are fullfiled:
1/ There are periodical requests going on - e.g. wait
2/ WebDriver is pretty slow to deliver responses - for instance Android ARM is used
In such cases it looks like that a delayed response from server - e.g. find element, fired
before isElementDisplayed, is returned as value. This call returns RemoteWebElement.
element().is().visible() prematurely exits with exception on Android
--------------------------------------------------------------------
Key: ARQGRA-384
URL:
https://issues.jboss.org/browse/ARQGRA-384
Project: Arquillian Graphene
Issue Type: Bug
Components: core
Affects Versions: 2.0.0.CR1
Reporter: Karel Piwko
Fix For: 2.0.0.Final
When using following call using Graphene and AndroidDriver, it often fails with an
exception on Android:
{code}
waitGui().withMessage("Add member button is not yet
present.").until().element(addMemberBtn).is().visible();
{code}
{code}
addUser(com.acme.example.test.DroneTest) Time elapsed: 8.491 sec <<< ERROR!
org.openqa.selenium.WebDriverException: Returned value cannot be converted to Boolean:
[org.openqa.selenium.remote.RemoteWebElement@30 -> unknown locator]
Build info: version: '2.35.0', revision:
'8df0c6bedf70ff9f22c647788f9fe9c8d22210e2', time: '2013-08-17 12:46:41'
System info: os.name: 'Linux', os.arch: 'amd64', os.version:
'2.6.32-358.18.1.el6.x86_64', java.version: '1.7.0_25'
Driver info: driver.version: unknown
at org.openqa.selenium.remote.RemoteWebElement.isDisplayed(RemoteWebElement.java:323)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at
org.jboss.arquillian.graphene.proxy.GrapheneProxyHandler.invokeReal(GrapheneProxyHandler.java:130)
at
org.jboss.arquillian.graphene.proxy.GrapheneContextualHandler$1.invoke(GrapheneContextualHandler.java:159)
at
org.jboss.arquillian.graphene.enricher.SearchContextInterceptor.intercept(SearchContextInterceptor.java:50)
at
org.jboss.arquillian.graphene.proxy.InvocationContextImpl.invoke(InvocationContextImpl.java:87)
at
org.jboss.arquillian.graphene.enricher.StaleElementInterceptor$1.apply(StaleElementInterceptor.java:48)
at
org.jboss.arquillian.graphene.enricher.StaleElementInterceptor$1.apply(StaleElementInterceptor.java:44)
at org.openqa.selenium.support.ui.FluentWait$1.apply(FluentWait.java:177)
at org.openqa.selenium.support.ui.FluentWait$1.apply(FluentWait.java:175)
at org.openqa.selenium.support.ui.FluentWait.until(FluentWait.java:208)
at org.openqa.selenium.support.ui.FluentWait.until(FluentWait.java:175)
at
org.jboss.arquillian.graphene.wait.WebDriverWaitImpl.until(WebDriverWaitImpl.java:87)
at
org.jboss.arquillian.graphene.enricher.StaleElementInterceptor.intercept(StaleElementInterceptor.java:44)
at
org.jboss.arquillian.graphene.proxy.InvocationContextImpl.invoke(InvocationContextImpl.java:87)
at
org.jboss.arquillian.graphene.intercept.InterceptorBuilder$2.intercept(InterceptorBuilder.java:139)
at
org.jboss.arquillian.graphene.proxy.InvocationContextImpl.invoke(InvocationContextImpl.java:87)
at
org.jboss.arquillian.graphene.proxy.GrapheneContextualHandler$2.call(GrapheneContextualHandler.java:209)
at
org.jboss.arquillian.graphene.context.BrowserActions.performAction(BrowserActions.java:62)
at
org.jboss.arquillian.graphene.proxy.GrapheneContextualHandler.invoke(GrapheneContextualHandler.java:205)
at com.sun.proxy.$Proxy37.isDisplayed(Unknown Source)
at
org.openqa.selenium.support.ui.ExpectedConditions.elementIfVisible(ExpectedConditions.java:228)
at
org.openqa.selenium.support.ui.ExpectedConditions.access$100(ExpectedConditions.java:39)
at
org.openqa.selenium.support.ui.ExpectedConditions$7.apply(ExpectedConditions.java:213)
at
org.openqa.selenium.support.ui.ExpectedConditions$7.apply(ExpectedConditions.java:210)
at
org.jboss.arquillian.graphene.condition.BooleanConditionWrapper.apply(BooleanConditionWrapper.java:61)
at
org.jboss.arquillian.graphene.condition.BooleanConditionWrapper.apply(BooleanConditionWrapper.java:37)
at org.openqa.selenium.support.ui.FluentWait.until(FluentWait.java:208)
at
org.jboss.arquillian.graphene.wait.WebDriverWaitImpl.until(WebDriverWaitImpl.java:102)
at
org.jboss.arquillian.graphene.wait.WebDriverWaitImpl.commit(WebDriverWaitImpl.java:110)
at
org.jboss.arquillian.graphene.wait.IsNotElementBuilderImpl.visible(IsNotElementBuilderImpl.java:57)
at com.acme.example.test.AddMemberPage.addNewMember(AddMemberPage.java:38)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at
org.jboss.arquillian.graphene.proxy.GrapheneProxyHandler.invokeReal(GrapheneProxyHandler.java:130)
at
org.jboss.arquillian.graphene.proxy.GrapheneContextualHandler$1.invoke(GrapheneContextualHandler.java:159)
at
org.jboss.arquillian.graphene.proxy.GrapheneContextualHandler$2.call(GrapheneContextualHandler.java:209)
at
org.jboss.arquillian.graphene.context.BrowserActions.performAction(BrowserActions.java:62)
at
org.jboss.arquillian.graphene.proxy.GrapheneContextualHandler.invoke(GrapheneContextualHandler.java:205)
at
org.jboss.arquillian.graphene.proxy.GrapheneContextualHandler.intercept(GrapheneContextualHandler.java:229)
at
com.acme.example.test.AddMemberPage$$EnhancerByGraphene$$75cffd91.addNewMember(<generated>)
at com.acme.example.test.DroneTest.addUser(DroneTest.java:25)
{code}
This looks like that visibility checker should ignore this exception, as element is in
intermediate state at this moment.
--
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