首页 > 解决方案 > Minium - 元素未附加到页面文档

问题描述

我在 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: stale element reference: element is not attach to the page document (Session info: chrome=68.0.3440.84) (Driver info: chromedriver=2.40.565498 (ea082db3280dd6843ebfb08a625e3eb905c4f5ab ),platform=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。名称:'Windows 10',os.arch:'amd64',os.version:'10.0',java.version:'1.8.0_172' 驱动程序信息:org.openqa.selenium.remote.RemoteWebDriver Capabilities {acceptInsecureCerts:false, acceptSslCerts: false, applicationCacheEnabled: false, browserConnectionEnabled: false, browserName: chrome, chrome: {chromedriverVersion: 2.40.565498 (ea082db3280dd6..., userDataDir: C:\Users\~1.SIL\AppDat...}, cssSelectorsEnabled: true,databaseEnabled:false,handlesAlerts:true,hasTouchScreen:false,javascriptEnabled:true,locationContextEnabled:true,mobileEmulationEnabled:false,nativeEvents:true,networkConnectionEnabled:false,pageLoadStrategy:正常,平台:XP,platformName:XP,可旋转:false,setWindowRect:true,takesHeapSnapshot:true,takeScreenshot:true,unexpectedAlertBehaviour:,unhandledPromptBehavior:,版本: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 at steps/General/ steps.js:95 at ?.js#88(eval)#1) at modules/forms.js:136 at modules/forms.js:175 at modules/forms.js:204 at steps/General/steps.js:95 at ?.js#88(eval)#1) at modules/forms.js:136 at modules/forms.js:175 at modules/forms.js:204 at steps/General/steps.js:95 at ?.

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

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

标签: javascriptselenium

解决方案


这似乎是与使用交互侦听器有关的问题。

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

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

如果是这样,请将所有交互 Listeners 移至Base Expression。例如:

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

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


推荐阅读