我在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
有任何想法可以解决这个问题吗?
答案 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(...)
...
并在没有基本表达式的情况下运行代码,以避免调用交互侦听器。