gpt4 book ai didi

grails - Geb:元素不再附加到 waitFor 内的 DOM

转载 作者:行者123 更新时间:2023-12-02 14:31:20 26 4
gpt4 key购买 nike

我从 Geb 测试中收到“元素不再附加到 DOM”错误。令我困惑的是错误来自 waitFor本身——我专门插入了等待,以允许页面上的异步事件完成,然后单击链接,该链接以前是相同错误的来源。如果等待本身失败,现在我很茫然。

代码类似于

waitFor { $("div", text: "... search string ... ") }
$("a", id: "element-id").click()

堆栈跟踪显示 waitFor 本身实际上是问题所在:
at org.openqa.selenium.remote.ErrorHandler.createThrowable(ErrorHandler.java:187)
at org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:145)
at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:554)
at org.openqa.selenium.remote.RemoteWebElement.execute(RemoteWebElement.java:268)
at org.openqa.selenium.remote.RemoteWebElement.getText(RemoteWebElement.java:152)
at geb.navigator.NonEmptyNavigator.matches_closure28(NonEmptyNavigator.groovy:474)
at geb.navigator.NonEmptyNavigator.matches(NonEmptyNavigator.groovy:471)
at geb.navigator.NonEmptyNavigator.filter_closure2(NonEmptyNavigator.groovy:63)
at geb.navigator.NonEmptyNavigator.filter(NonEmptyNavigator.groovy:63)
at geb.navigator.NonEmptyNavigator.find(NonEmptyNavigator.groovy:48)
at geb.content.NavigableSupport.$(NavigableSupport.groovy:96)
at geb.Browser.methodMissing(Browser.groovy:193)
at geb.spock.GebSpec.methodMissing(GebSpec.groovy:51)
at [my test]_closure7([my test].groovy:147)
at [my test]_closure7([my test].groovy)
at geb.waiting.Wait.waitFor(Wait.groovy:106)

最佳答案

从堆栈跟踪中,我可以看到您在测试类而不是模块内部使用了该选择器,因此可以排除模块基本元素被分离的可能性。

如果这对您来说一直发生,那么这意味着 div 选择的元素之一选择器在检索其文本以对其进行过滤之前从 DOM 中删除。

发生这种情况的原因有两个:

  • 您的选择器非常慢 - 选择页面中的所有 div 元素,然后根据 JVM 中的文本过滤它们可能需要很长时间。假设您使用默认等待预设,那么如果该选择器花费超过 5 秒,那么 waitFor {} block 将只运行一次,获取异常并且永远不会重试,因为它耗尽了时间。您应该在浏览器中进行尽可能多的过滤,即使用与 CSS3 兼容的选择器并在尽可能小的元素集上使用 Geb 的文本过滤扩展。
  • 您的页面是周期性异步的,并且它的变化比选择器根据元素文本过滤的速度更快。这将再次成为可能,因为您的选择器看起来可能非常慢。

  • 基本上,我建议提出比您目前拥有的更具体的选择器。

    关于grails - Geb:元素不再附加到 waitFor 内的 DOM,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28858952/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com