可见且可交互的元素出现 InvalidElementStateException

InvalidElementStateException on element that is visible and interactable

元素:

<input
    class="DFLeft valid"
    id="Input_329"
    name="EsigFirstName"
    style="width:225px;"
    type="text"
    aria-labelledby="Input_329Label"
    value="twoEEm"
    maxlength="255"
    data-val="true"
    data-val-required="Required."
    data-val-length="Min 0 characters required."
    data-val-length-max="255"
    aria-required="true"
>

Geb 导航器:

firstNameTextBox(wait:true) {
    $(
        $(name:"SigFirstName"),
        $(name:"ESigFirstName"),
        $(name:"EsigFirstName")
    ).module(TextInput)
}

我检查过:

  1. 输入顶部没有显示任何元素
  2. 可以手动编辑元素文本
  3. Geb Navigator 成功returns 1 个元素
  4. 成功将 Geb Navigator 转换为 jquery 选择器 returns 1 个元素

完整堆栈跟踪:

org.openqa.selenium.InvalidElementStateException: invalid element state:
Element is not currently interactable and may not be manipulated Driver
info: org.openqa.selenium.chrome.ChromeDriver
Capabilities [{
    applicationCacheEnabled=false, rotatable=false,mobileEmulationEnabled=false, networkConnectionEnabled=false,
    chrome={chromedriverVersion=2.24.417431 (9aea000394714d2fbb20850021f6204f2256b9cf),
    userDataDir=C:\Users\dclark\AppData\Local\Temp\scoped_dir6964_14861},
    takesHeapSnapshot=true, pageLoadStrategy=normal, databaseEnabled=false, handlesAlerts=true, hasTouchScreen=false,
    version=56.0.2924.87, platform=XP, browserConnectionEnabled=false, nativeEvents=true, acceptSslCerts=true, locationContextEnabled=true,
    webStorageEnabled=true, browserName=chrome, takesScreenshot=true, javascriptEnabled=true, cssSelectorsEnabled=true
}]
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
    at org.openqa.selenium.remote.ErrorHandler.createThrowable(ErrorHandler.java:206)
    at org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:158)
    at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:595)
    at org.openqa.selenium.remote.RemoteWebElement.execute(RemoteWebElement.java:273)
    at org.openqa.selenium.remote.RemoteWebElement.clear(RemoteWebElement.java:118)
    at org.openqa.selenium.WebElement$clear.call(Unknown Source)
    at geb.navigator.NonEmptyNavigator.setInputValue(NonEmptyNavigator.groovy:668)
    at sun.reflect.GeneratedMethodAccessor145.invoke(Unknown Source) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:90)
    at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:324)
    at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1207)
    at groovy.lang.ExpandoMetaClass.invokeMethod(ExpandoMetaClass.java:1121)
    at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1016)
    at groovy.lang.DelegatingMetaClass.invokeMethod(DelegatingMetaClass.java:149)
    at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1152)
    at groovy.lang.ExpandoMetaClass.invokeMethod(ExpandoMetaClass.java:1121)
    at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1016)
    at org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.callCurrent(PogoMetaClassSite.java:66)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:171)
    at geb.navigator.NonEmptyNavigator$_setInputValues_closure41.doCall(NonEmptyNavigator.groovy:646)
    at sun.reflect.GeneratedMethodAccessor144.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:90)
    at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:324)
    at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1207)
    at groovy.lang.ExpandoMetaClass.invokeMethod(ExpandoMetaClass.java:1121)
    at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1016)
    at groovy.lang.Closure.call(Closure.java:423)
    at groovy.lang.Closure.call(Closure.java:439)
    at org.codehaus.groovy.runtime.DefaultGroovyMethods.each(DefaultGroovyMethods.java:2027)
    at org.codehaus.groovy.runtime.DefaultGroovyMethods.each(DefaultGroovyMethods.java:2012)
    at org.codehaus.groovy.runtime.DefaultGroovyMethods.each(DefaultGroovyMethods.java:2053)
    at org.codehaus.groovy.runtime.dgm2.invoke(Unknown Source)
    at org.codehaus.groovy.runtime.callsite.PojoMetaMethodSite$PojoMetaMethodSiteNoUnwrapNoCoerce.invoke(PojoMetaMethodSite.java:271)
    at org.codehaus.groovy.runtime.callsite.PojoMetaMethodSite.call(PojoMetaMethodSite.java:53)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:122)
    at geb.navigator.NonEmptyNavigator.setInputValues(NonEmptyNavigator.groovy:645)
    at sun.reflect.GeneratedMethodAccessor142.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:90)
    at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:324)
    at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1207)
    at groovy.lang.ExpandoMetaClass.invokeMethod(ExpandoMetaClass.java:1121)
    at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1016)
    at groovy.lang.DelegatingMetaClass.invokeMethod(DelegatingMetaClass.java:149)
    at org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.callCurrent(PogoMetaClassSite.java:66)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:171)
    at geb.navigator.NonEmptyNavigator.value(NonEmptyNavigator.groovy:423)
    at sun.reflect.GeneratedMethodAccessor92.invoke(Unknown Source)     
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)     
    at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:90)
    at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:324)   
    at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1207)  
    at groovy.lang.ExpandoMetaClass.invokeMethod(ExpandoMetaClass.java:1121)
    at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1016)
    at groovy.lang.DelegatingMetaClass.invokeMethod(DelegatingMetaClass.java:149)
    at org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.call(PogoMetaClassSite.java:39)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:122)
    at geb.module.TextInput.setText(TextInput.groovy:27)    
    at sun.reflect.GeneratedMethodAccessor371.invoke(Unknown Source)    
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)     
    at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:90)
    at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:324)   
    at groovy.lang.MetaClassImpl.setProperty(MetaClassImpl.java:2699)   
    at groovy.lang.ExpandoMetaClass.setProperty(ExpandoMetaClass.java:1181)
    at groovy.lang.MetaClassImpl.setProperty(MetaClassImpl.java:3746)   
    at geb.Module.setProperty(Module.groovy)    
    at org.codehaus.groovy.runtime.InvokerHelper.setProperty(InvokerHelper.java:192)
    at org.codehaus.groovy.runtime.DefaultGroovyMethods.putAt(DefaultGroovyMethods.java:268)
    at org.codehaus.groovy.runtime.dgm8.invoke(Unknown Source)   
    at org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite$PogoMetaMethodSiteNoUnwrapNoCoerce.invoke(PogoMetaMethodSite.java:248)
    at org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite.call(PogoMetaMethodSite.java:68)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:130)
    at geb.content.TemplateDerivedPageContent.propertyMissing(TemplateDerivedPageContent.groovy:136)
    at sun.reflect.GeneratedMethodAccessor163.invoke(Unknown Source)    
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)     
    at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:90)
    at groovy.lang.MetaClassImpl.invokeMissingProperty(MetaClassImpl.java:877)
    at groovy.lang.MetaClassImpl.setProperty(MetaClassImpl.java:2721)   
    at groovy.lang.ExpandoMetaClass.setProperty(ExpandoMetaClass.java:1181)
    at groovy.lang.MetaClassImpl.setProperty(MetaClassImpl.java:3746)   
    at groovy.lang.DelegatingMetaClass.setProperty(DelegatingMetaClass.java:170)
    at geb.content.TemplateDerivedPageContent.setProperty(TemplateDerivedPageContent.groovy)
    at org.codehaus.groovy.runtime.InvokerHelper.setProperty(InvokerHelper.java:192)
    at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.setProperty(ScriptBytecodeAdapter.java:482)
    at com.stuff.qa.es.page.ShoppingEnrollEnrollmentFormAcceptCoveragePage.Usersignsapplication(ShoppingEnrollEnrollmentFormAcceptCoveragePage.groovy:34)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)  
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)     
    at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:90)
    at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:324)   
    at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1207)  
    at groovy.lang.ExpandoMetaClass.invokeMethod(ExpandoMetaClass.java:1121)
    at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1016)
    at org.codehaus.groovy.runtime.InvokerHelper.invokePogoMethod(InvokerHelper.java:914)
    at org.codehaus.groovy.runtime.InvokerHelper.invokeMethod(InvokerHelper.java:897)
    at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.invokeMethodN(ScriptBytecodeAdapter.java:166)
    at geb.Browser.methodMissing(Browser.groovy:207)    
    at geb.Browser$methodMissing.call(Unknown Source)    
    at TestScript.methodMissing(ConsoleGroovyTemplate.groovy:84)    
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)  
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)     
    at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:90)
    at groovy.lang.MetaClassImpl.invokeMissingMethod(MetaClassImpl.java:933)
    at groovy.lang.MetaClassImpl.invokePropertyOrMissing(MetaClassImpl.java:1256)
    at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1209)
    at groovy.lang.ExpandoMetaClass.invokeMethod(ExpandoMetaClass.java:1121)
    at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1016)
    at org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.callCurrent(PogoMetaClassSite.java:66)
    at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallCurrent(CallSiteArray.java:49)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:151)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:171)
    at TestScript.runScript(ConsoleGroovyTemplate.groovy:43)    
    at TestScript$runScript.call(Unknown Source)    
    at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:45)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:110)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:114)
    at ConsoleGroovyTemplate.run(ConsoleGroovyTemplate.groovy:119)  
    at groovy.lang.GroovyShell.runScriptOrMainOrTestOrRunnable(GroovyShell.java:261)
    at groovy.lang.GroovyShell.run(GroovyShell.java:522)    
    at groovy.lang.GroovyShell.run(GroovyShell.java:501)    
    at groovy.lang.GroovyShell.run(GroovyShell.java:168)    
    at groovy.lang.GroovyShell$run.call(Unknown Source)   
    at groovy.ui.Console$_runScriptImpl_closure17.doCall(Console.groovy:984)
    at groovy.ui.Console$_runScriptImpl_closure17.doCall(Console.groovy)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)  
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)     
    at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:90)
    at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:324)   
    at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1207)  
    at groovy.lang.ExpandoMetaClass.invokeMethod(ExpandoMetaClass.java:1121)
    at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1016)
    at groovy.lang.Closure.call(Closure.java:423)   
    at groovy.lang.Closure.call(Closure.java:417)   
    at groovy.lang.Closure.run(Closure.java:504)    
    at java.lang.Thread.run(Thread.java:745)

已解决。

我所在的 geb 页面扩展了之前在 spock 规范中访问过的 geb 页面。问题已通过将导航器复制到 child 页面得到解决。

我的想法是 parent 页面(首先访问)已经解析了导航器,而 child 找不到之前解析的导航器。

有人可以验证或纠正我吗?我不喜欢我必须复制这段代码。