[arquillian-issues] [JBoss JIRA] (ARQGRA-384) element().is().visible() prematurely exits with exception on Android

Karel Piwko (JIRA) jira-events at lists.jboss.org
Tue Oct 1 04:24:02 EDT 2013


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

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 at 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


More information about the arquillian-issues mailing list