【问题标题】:Minium - Element is not attached to the page documentMinium - 元素未附加到页面文档
【发布时间】:2018-08-09 13:35:01
【问题描述】:

我在 Minim Developer 发现了一个奇怪的行为;当我在控制台中运行以下代码时:

$(".form-group").has($(".control-label").withText("Description"))
    .find(".cke_wysiwyg_frame").frames().find(".cke_editable").fill("Minium Test")

Minium 可以填写“描述”字段

但是当我尝试在步骤定义中运行相同的代码时,出现以下错误:

org.mozilla.javascript.WrappedException: Wrapped org.openqa.selenium.StaleElementReferenceException:过时的元素 参考:元素未附加到页面文档(会话 信息:chrome=68.0.3440.84)(驱动程序信息:chromedriver=2.40.565498 (ea082db3280dd6843ebfb08a625e3eb905c4f5ab),平台=Windows NT 10.0.17134 x86_64)(警告:服务器未提供任何堆栈跟踪信息)命令持续时间或超时:0 毫秒对于 有关此错误的文档,请访问: http://seleniumhq.org/exceptions/stale_element_reference.html 构建 信息:版本:'3.8.1',修订:'6e95a6684b',时间: '2017-12-01T18:33:54.468Z' 系统信息:主机:'47ZZQC2',ip: '169.254.70.131',os.name:'Windows 10',os.arch:'amd64',os.version: '10.0', java.version: '1.8.0_172' 驱动信息: org.openqa.selenium.remote.RemoteWebDriver 功能 {acceptInsecureCerts:假,acceptSslCerts:假, applicationCacheEnabled:假,browserConnectionEnabled:假, 浏览器名称:铬,铬:{chromedriverVersion:2.40.565498 (ea082db3280dd6..., userDataDir: C:\Users\~1.SIL\AppDat...}, cssSelectorsEnabled:true,databaseEnabled:false,handlesAlerts: 真,hasTouchScreen:假,javascriptEnabled:真, locationContextEnabled:真,mobileEmulationEnabled:假, nativeEvents:true,networkConnectionEnabled:false,pageLoadStrategy: 正常,平台:XP,平台名称:XP,可旋转:false, setWindowRect:真,takeHeapSnapshot:真,takeScreenshot:真, 意外警报行为:,未处理的提示行为:,版本: 68.0.3440.84,webStorageEnabled:true} 会话 ID:103c08b587995e088faa269fbb46a4fd (/minium/cucumber/internal/dsl.js#88(eval)#1) 在 modules/forms.js:136 at modules/forms.js:175 at modules/forms.js:204 在步骤/General/steps.js:95 在?。

当我填写字段时:features/Directory/Groups/groups.feature:48

有什么办法可以解决这个问题吗?

【问题讨论】:

    标签: javascript selenium


    【解决方案1】:

    这似乎与interaction listener的使用有关。

    你是否像这样在 world.js 的浏览器配置中添加任何交互监听器?

    browser.configure()
        .defaultTimeout(5, timeUnits.SECONDS)
        .defaultInterval(500, timeUnits.MILLISECONDS)
        .interactionListeners()
          .add(minium.interactionListeners.onStaleElementReference().thenRetry())
          .add(...)
          ...
        .done();
    

    如果是,请将所有交互监听器移至Base Expression。例如:

    base = $(":root")
          .unless($(".modal").withCss("display", "block")).add(".modal-body")
          .with(minium.interactionListeners.onStaleElementReference().thenRetry())
          .with(...)
          ...
    

    在没有基本表达式的情况下运行您的代码,以避免调用交互侦听器。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-10-16
      • 1970-01-01
      • 1970-01-01
      • 2020-11-09
      • 2020-07-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多