Hello Guys. Need your help.
Is there any settings in appium that catch this error when this happens? I am currently trying to create a script that will answer the different element types like radio box, checkbox, carousel, etc.
All of them are named answerItem and then store in pageFactorty and then my script will either tap or swipe the carousel depending on the element type.
To check if elements are displayed, I have a self-call function with retry and try-catch all exceptions until either the element is visible or the retry counter is 0.
The script is able to select an answer from the list and taps continue button just fine. The problem is when the answerItem changes from radiobutton to carousel or v.v, the application in the android emulator will close. Itâs not an app crash because the script is still running since I can see the retry counting. The appium desktop logs this error. I saw some guides using the By locator to refresh the element but I donât know how to do that with pagefactory.
[W3C (dd989c97)] Calling AppiumDriver.elementDisplayed() with args: [âb399e514-7b8c-4d14-a54e-2ce7b149a894â,âdd989c97-1fe6-4a96-b034-aed6fe87270bâ]
[WD Proxy] Matched â/element/b399e514-7b8c-4d14-a54e-2ce7b149a894/attribute/displayedâ to command name âgetAttributeâ
[WD Proxy] Proxying [GET /element/b399e514-7b8c-4d14-a54e-2ce7b149a894/attribute/displayed] to [GET http://127.0.0.1:8205/wd/hub/session/12ca2aa2-9eac-4efd-a766-8a8c013bc190/element/b399e514-7b8c-4d14-a54e-2ce7b149a894/attribute/displayed] with no body
[WD Proxy] Got response with status 404: {âsessionIdâ:â12ca2aa2-9eac-4efd-a766-8a8c013bc190â,âvalueâ:{âerrorâ:âstale element referenceâ,âmessageâ:"Cached elements âBy.xpath: //[contains(@content-desc, âanswerItemâ)]â do not exist in DOM anymore",âstacktraceâ:"io.appium.uiautomator2.common.exceptions.StaleElementReferenceException: Cached elements 'By.xpath: //[contains(@content-desc, âanswerItemâ)]â do not exist in DOM anymore\n\tat io.appium.uiautomator2.model.ElementsCache.restore(ElementsCache.java:74)\n\tat io.appium.uiautomator2.model.ElementsCache.get(ElementsCache.java:146)\n\tat io.appium.uiautomator2.handler.GetElementAttribute.safeHandle(GetElementAttribute.java:23)\n\tat io.appium.uiautomator2.handler.request.SafeRequestHandler.handle(SafeRequestHandler.java:41)\n\tat io.appium.uiautomator2.server.AppiumServlet.handleRequest(AppiumServlet.java:261)\n\tat io.appium.uiautomator2.server.AppiumServlet.handleHttpRequest(AppiumServlet.java:255)\n\tat io.appium.uiautomator2.http.ServerHandler.channelRead(ServerHandler.java:68)\n\tat io.nettâŚ
[W3C] Matched W3C error code âstale element referenceâ to StaleElementReferenceError
[W3C (dd989c97)] Encountered internal error running command: io.appium.uiautomator2.common.exceptions.StaleElementReferenceException: Cached elements âBy.xpath: //*[contains(@content-desc, âanswerItemâ)]â do not exist in DOM anymore
[W3C (dd989c97)] at io.appium.uiautomator2.model.ElementsCache.restore(ElementsCache.java:74)
[W3C (dd989c97)] at io.appium.uiautomator2.model.ElementsCache.get(ElementsCache.java:146)
[W3C (dd989c97)] at io.appium.uiautomator2.handler.GetElementAttribute.safeHandle(GetElementAttribute.java:23)
[W3C (dd989c97)] at io.appium.uiautomator2.handler.request.SafeRequestHandler.handle(SafeRequestHandler.java:41)
[W3C (dd989c97)] at io.appium.uiautomator2.server.AppiumServlet.handleRequest(AppiumServlet.java:261)
[W3C (dd989c97)] at io.appium.uiautomator2.server.AppiumServlet.handleHttpRequest(AppiumServlet.java:255)
[W3C (dd989c97)] at io.appium.uiautomator2.http.ServerHandler.channelRead(ServerHandler.java:68)
[W3C (dd989c97)] at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:366)
[W3C (dd989c97)] at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:352)
[W3C (dd989c97)] at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:345)
[W3C (dd989c97)] at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:102)
[W3C (dd989c97)] at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:366)
[W3C (dd989c97)] at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:352)
[W3C (dd989c97)] at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:345)
[W3C (dd989c97)] at io.netty.channel.CombinedChannelDuplexHandler$DelegatingChannelHandlerContext.fireChannelRead(CombinedChannelDuplexHandler.java:435)
[W3C (dd989c97)] at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:293)
[W3C (dd989c97)] at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:267)
[W3C (dd989c97)] at io.netty.channel.CombinedChannelDuplexHandler.channelRead(CombinedChannelDuplexHandler.java:250)
[W3C (dd989c97)] at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:366)
[W3C (dd989c97)] at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:352)
[W3C (dd989c97)] at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:345)
[W3C (dd989c97)] at io.netty.handler.timeout.IdleStateHandler.channelRead(IdleStateHandler.java:266)
[W3C (dd989c97)] at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:366)
[W3C (dd989c97)] at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:352)
[W3C (dd989c97)] at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:345)
[W3C (dd989c97)] at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1294)
[W3C (dd989c97)] at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:366)
[W3C (dd989c97)] at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:352)
[W3C (dd989c97)] at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:911)
[W3C (dd989c97)] at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:131)
[W3C (dd989c97)] at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:611)
[W3C (dd989c97)] at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:552)
[W3C (dd989c97)] at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:466)
[W3C (dd989c97)] at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:438)
[W3C (dd989c97)] at io.netty.util.concurrent.SingleThreadEventExecutor$2.run(SingleThreadEventExecutor.java:140)
[W3C (dd989c97)] at io.netty.util.concurrent.DefaultThreadFactory$DefaultRunnableDecorator.run(DefaultThreadFactory.java:144)
[W3C (dd989c97)] at java.lang.Thread.run(Thread.java:919)
[W3C (dd989c97)]
[HTTP] â GET /wd/hub/session/dd989c97-1fe6-4a96-b034-aed6fe87270b/element/b399e514-7b8c-4d14-a54e-2ce7b149a894/displayed 404 40 ms - 4005
[HTTP]
[HTTP] â GET /wd/hub/session/dd989c97-1fe6-4a96-b034-aed6fe87270b/element/b399e514-7b8c-4d14-a54e-2ce7b149a894/displayed
[HTTP] {}