【发布时间】:2022-08-19 17:21:36
【问题描述】:
我正在使用带有机器人框架的 appium 进行 android 应用程序自动化。它使用 kotlin 编写的原生 android 应用程序。应用程序中有一个带有类(androidx.recyclerview.widget.RecyclerView)的列表视图,其中包含元素列表。当元素更多时,我们必须滚动视图才能看到下面的元素。当我尝试单击 recyclerview 中的元素时,尽管我可以看到该元素在视图中,但它会引发 StaleElementReferenceException。当元素数量更多以至于我们必须滚动视图才能看到元素时,就会出现此问题。
感谢任何帮助。下面是例外
[W3C (65b926d9)] Calling AppiumDriver.click() with args: [\"00000000-0000-0876-ffff-ffff00000fa3\",\"65b926d9-2f29-459c-8e63-06bdf2a2be44\"]
[WD Proxy] Matched \'/element/00000000-0000-0876-ffff-ffff00000fa3/click\' to command name \'click\'
[WD Proxy] Proxying [POST /element/00000000-0000-0876-ffff-ffff00000fa3/click] to [POST http://127.0.0.1:8214/wd/hub/session/e9828d4f-11ee-456c-b51a-9f34ce990233/element/00000000-0000-0876-ffff-ffff00000fa3/click] with body: {\"element\":\"00000000-0000-0876-ffff-ffff00000fa3\"}
[WD Proxy] Got response with status 404: {\"sessionId\":\"e9828d4f-11ee-456c-b51a-9f34ce990233\",\"value\":{\"error\":\"stale element reference\",\"message\":\"Cached elements \'By.xpath: //*[contains(@text,\\\"FF109538\\\")]\' do not exist in DOM anymore\",\"stacktrace\":\"io.appium.uiautomator2.common.exceptions.StaleElementReferenceException: Cached elements \'By.xpath: //*[contains(@text,\\\"FF109538\\\")]\' do not exist in DOM anymore\\n\\tat io.appium.uiautomator2.model.ElementsCache.restore(ElementsCache.java:78)\\n\\tat io.appium.uiautomator2.model.ElementsCache.get(ElementsCache.java:153)\\n\\tat io.appium.uiautomator2.handler.Click.safeHandle(Click.java:36)\\n\\tat io.appium.uiautomator2.handler.request.SafeRequestHandler.handle(SafeRequestHandler.java:59)\\n\\tat io.appium.uiautomator2.server.AppiumServlet.handleRequest(AppiumServlet.java:266)\\n\\tat io.appium.uiautomator2.server.AppiumServlet.handleHttpRequest(AppiumServlet.java:260)\\n\\tat io.appium.uiautomator2.http.ServerHandler.channelRead(ServerHandler.java:68)\\n\\tat io.netty.channel.AbstractChannelHandlerContext.invoke...
[W3C] Matched W3C error code \'stale element reference\' to StaleElementReferenceError
[W3C (65b926d9)] Encountered internal error running command: io.appium.uiautomator2.common.exceptions.StaleElementReferenceException: Cached elements \'By.xpath: //*[contains(@text,\"FF109538\")]\' do not exist in DOM anymore
[W3C (65b926d9)] at io.appium.uiautomator2.model.ElementsCache.restore(ElementsCache.java:78)
[W3C (65b926d9)] at io.appium.uiautomator2.model.ElementsCache.get(ElementsCache.java:153)
[W3C (65b926d9)] at io.appium.uiautomator2.handler.Click.safeHandle(Click.java:36)
[W3C (65b926d9)] at io.appium.uiautomator2.handler.request.SafeRequestHandler.handle(SafeRequestHandler.java:59)
[W3C (65b926d9)] at io.appium.uiautomator2.server.AppiumServlet.handleRequest(AppiumServlet.java:266)
[W3C (65b926d9)] at io.appium.uiautomator2.server.AppiumServlet.handleHttpRequest(AppiumServlet.java:260)
[W3C (65b926d9)] at io.appium.uiautomator2.http.ServerHandler.channelRead(ServerHandler.java:68)
[W3C (65b926d9)] at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:366)
[W3C (65b926d9)] at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:352)
[W3C (65b926d9)] at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:345)
[W3C (65b926d9)] at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:102)
[W3C (65b926d9)] at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:366)
[W3C (65b926d9)] at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:352)
[W3C (65b926d9)] at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:345)
[W3C (65b926d9)] at io.netty.channel.CombinedChannelDuplexHandler$DelegatingChannelHandlerContext.fireChannelRead(CombinedChannelDuplexHandler.java:435)
[W3C (65b926d9)] at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:293)
[W3C (65b926d9)] at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:267)
[W3C (65b926d9)] at io.netty.channel.CombinedChannelDuplexHandler.channelRead(CombinedChannelDuplexHandler.java:250)
[W3C (65b926d9)] at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:366)
[W3C (65b926d9)] at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:352)
[W3C (65b926d9)] at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:345)
[W3C (65b926d9)] at io.netty.handler.timeout.IdleStateHandler.channelRead(IdleStateHandler.java:266)
[W3C (65b926d9)] at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:366)
[W3C (65b926d9)] at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:352)
[W3C (65b926d9)] at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:345)
[W3C (65b926d9)] at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1294)
[W3C (65b926d9)] at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:366)
[W3C (65b926d9)] at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:352)
[W3C (65b926d9)] at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:911)
[W3C (65b926d9)] at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:131)
[W3C (65b926d9)] at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:611)
[W3C (65b926d9)] at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:552)
[W3C (65b926d9)] at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:466)
[W3C (65b926d9)] at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:438)
[W3C (65b926d9)] at io.netty.util.concurrent.SingleThreadEventExecutor$2.run(SingleThreadEventExecutor.java:140)
[W3C (65b926d9)] at io.netty.util.concurrent.DefaultThreadFactory$DefaultRunnableDecorator.run(DefaultThreadFactory.java:144)
[W3C (65b926d9)] at java.lang.Thread.run(Thread.java:923)
[W3C (65b926d9)]
[HTTP] <-- POST /wd/hub/session/65b926d9-2f29-459c-8e63-06bdf2a2be44/element/00000000-0000-0876-ffff-ffff00000fa3/click 404 10081 ms - 3959
[HTTP]
[HTTP] --> GET /wd/hub/session/65b926d9-2f29-459c-8e63-06bdf2a2be44/screenshot
[HTTP] {}
[W3C (65b926d9)] Calling AppiumDriver.getScreenshot() with args: [\"65b926d9-2f29-459c-8e63-06bdf2a2be44\"]
[WD Proxy] Matched \'/screenshot\' to command name \'getScreenshot\'
[WD Proxy] Proxying [GET /screenshot] to [GET http://127.0.0.1:8214/wd/hub/session/e9828d4f-11ee-456c-b51a-9f34ce990233/screenshot] with no body
[WD Proxy] Got response with status 200: {\"sessionId\":\"e9828d4f-11ee-456c-b51a-9f34ce990233\",\"value\":\"iVBORw0KGgoAAAANSUhEUgAABDgAAAlgCAYAAABtGofVAAAAAXNSR0IArs4c6QAAAARzQklUCAgI\\nCHwIZIgAACAASURBVHic7N13WFTX3j78mzoUAZEmAiKIg4ZiQdTYW+xExSQinhxLiul5Ej1HHz2J\\nmsTE5DwxMbaIxpyI0ViCScixRU1QY8EWxYpIERREpBep8/7By/4xzB4YYNrG+3NdXhezZpcFM4Ps\\ne6/1XSYKhUIBIiIiIiIiIiIJMzV0B4iIiIiIiIiIWosBBxERERERERFJHgMOIiIiIiIiIpI8BhxE\\nREREREREJHkMOIiIiIiIiIhI8hhwEBEREREREZHkMeAgIiIiIiIiIsljwEFEREREREREkseAg4iI\\niIiIiIgkjwEHEREREREREUkeAw4iIiIiIiIikjwGHEREREREREQkeQw4iIiIiIiIiEjyGHAQERER\\nERERkeQx4CAiIiIiIiIiyWPAQURERERERESSx4CDiIiIiIiIiCSPAQcRERERERERSR4DDiIiIiIi\\nIiKSPAYcRERERERERCR5DDiIiIiIiIiISPIYcBARERERERGR5DHgICIiIiIiIiLJY8BBRERERERE\\nRJLHgIOIiIiIiIiIJI8BBxERERERERFJHgMOIiIiIiIiIpI8BhxEREREREREJHkMOIiIiIiIiIhI\\n8hhwEBEREREREZHkMeAgIiIiIiIiIsljwEFEREREREREkseAg4iIiIiIiIgkjwEHEREREREREUke\\nAw4iIiIiIiIikjwGHEREREREREQkeQw4iIiIiIiIiEjyGHAQERERERERkeQx4CAiIiIiIiIiyWPA\\nQURERERERESSx4CDiIiIiIiIiCSPAQcRERERERERSR4DDiIiIiIiIiKSPAYcRERERERERCR55obu\\nABEREREREQFVVVUoKSlBeXk5...
[W3C (65b926d9)] Responding to client with driver.getScreenshot() result: \"iVBORw0KGgoAAAANSUhEUgAABDgAAAlgCAYAAABtGofVAAAAAXNSR0IArs4c6QAAAARzQklUCAgI\\nCHwIZIgAACAASURBVHic7N13WFTX3j78mzoUAZEmAiKIg4ZiQdTYW+xExSQinhxLiul5Ej1HHz2J\\nmsTE5DwxMbaIxpyI0ViCScixRU1QY8EWxYpIERREpBep8/7By/4xzB4YYNrG+3NdXhezZpcFM4Ps\\ne6/1XSYKhUIBIiIiIiIiIiIJMzV0B4iIiIiIiIiIWosBBxERERERERFJHgMOIiIiIiIiIpI8BhxE\\nREREREREJHkMOIiIiIiIiIhI8hhwEBEREREREZHkMeAgIiIiIiIiIsljwEFEREREREREkseAg4iI\\niIiIiIgkjwEHEREREREREUkeAw4iIiIiIiIikjwGHEREREREREQkeQw4iIiIiIiIiEjyGHAQERER\\nERERkeQx4CAiIiIiIiIiyWPAQURERERERESSx4CDiIiIiIiIiCSPAQcRERERERERSR4DDiIiIiIi\\nIiKSPAYcRERERERERCR5DDiIiIiIiIiISPIYcBARERERERGR5DHgICIiIiIiIiLJY8BBRERERERE\\nRJLHgIOIiIiIiIiIJI8BBxERERERERFJHgMOIiIiIiIiIpI8BhxEREREREREJHkMOIiIiIiIiIhI\\n8hhwEBEREREREZHkMeAgIiIiIiIiIsljwEFEREREREREkseAg4iIiIiIiIgkjwEHEREREREREUke\\nAw4iIiIiIiIikjwGHEREREREREQkeQw4iIiIiIiIiEjyGHAQERERERERkeQx4CAiIiIiIiIiyWPA\\nQURERERERESSx4CDiIiIiIiIiCSPAQcRERERERERSR4DDiIiIiIiIiKSPAYcRERERERERCR55obu\\nABEREREREQFVVVUoKSlBeXk5ysvLlZ6TyWSQyWSwtbWFuTkv40j7qqqqkJqa2ug2Xbp0Mer3n/H2\\njIiIiI...
[HTTP] <-- GET /wd/hub/session/65b926d9-2f29-459c-8e63-06bdf2a2be44/screenshot 200 391 ms - 284220
标签: automation appium robotframework appium-android