Minium-元素未附加到页面文档

时间:2018-08-09 13:35:02

标签: javascript selenium

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

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

Minimum可以填写“说明”字段

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

  

org.mozilla.javascript.WrappedException:包装   org.openqa.selenium.StaleElementReferenceException:旧元素   reference:元素未附加到页面文档(会话   信息: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',操作系统名称:'Windows 10',os.arch:'amd64',os.version:   '10 .0',java.version:'1.8.0_172'驱动程序信息:   org.openqa.selenium.remote.RemoteWebDriver功能   {acceptInsecureCerts:否,acceptSslCerts:否,   applicationCacheEnabled:否,browserConnectionEnabled:否,   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,平台名称:XP,可旋转:false,   setWindowRect:true,takesHeapSnapshot:true,takesScreenshot: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   在steps / General / steps.js:95中的modules / forms.js:204       在?。

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

有任何想法可以解决这个问题吗?

1 个答案:

答案 0 :(得分:2)

似乎与使用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(...)
      ...

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