org.openqa.selenium.StaleElementReferenceException: stale element reference: element is not attached to the page document

522 views
Skip to first unread message

bow...@gmail.com

unread,
Oct 4, 2014, 5:12:47 AM10/4/14
to clj-we...@googlegroups.com
Hi.  I'm recently encountering this error and I've read what other people have posted about it, but I don't think the same thing is happening to me.

What happens is that as soon as a file is selected, the input element is removed.  This throws the error.  The main problem is that I can't catch the exception.  Or I don't know how, I'd appreciate any advice specifically on that.  Even if I wrap everything in a try the exception is thrown outside of that.  This also happens with firefox.

Here is my html and clj code.

<html>
<script type="text/javascript" src="jquery-2.1.1.min.js"></script>
<div id="uploader">
<input type="file" id="fileInput" />
</div>

<script type="text/javascript">
$
(document).ready(function(){
  $
("#fileInput").change(function(){
         $
("#fileInput").remove();
         $
("#uploader").text("Uploading");
   
});
});
</script>
</html>


(defn lets-error []
 
(taxi/set-driver! {:browser :chrome} "uploadfile.html")
 
(let [file-select (taxi/find-element {:tag :input :id "fileInput"})]
     
(taxi/send-keys file-select "sometext.txt"))
 
)

org.openqa.selenium.StaleElementReferenceException: stale element reference: element is not attached to the page document
  (Session info: chrome=37.0.2062.120)
  (Driver info: chromedriver=2.9.248304,platform=Linux 3.13.0-36-generic x86_64) (WARNING: The server did not provide any stacktrace information)
Command duration or timeout: 10 milliseconds
For documentation on this error, please visit: http://seleniumhq.org/exceptions/stale_element_reference.html
Build info: version: '2.39.0', revision: '14fa800511cc5d66d426e08b0b2ab926c7ed7398', time: '2013-12-16 13:18:38'
System info: host: 'mdlsqrty3', ip: '127.0.1.1', os.name: 'Linux', os.arch: 'amd64', os.version: '3.13.0-36-generic', java.version: '1.7.0_65'
Session ID: f41b77cd7cb78784029900f6158fbdc0
Driver info: org.openqa.selenium.chrome.ChromeDriver
Capabilities [{platform=LINUX, acceptSslCerts=true, javascriptEnabled=true, browserName=chrome, chrome={userDataDir=/tmp/.com.google.Chrome.q1bbei}, rotatable=false, locationContextEnabled=true, version=37.0.2062.120, takesHeapSnapshot=true, cssSelectorsEnabled=true, databaseEnabled=false, handlesAlerts=true, browserConnectionEnabled=false, nativeEvents=true, webStorageEnabled=true, applicationCacheEnabled=false, takesScreenshot=true}]
 at sun.reflect.NativeConstructorAccessorImpl.newInstance0 (NativeConstructorAccessorImpl.java:-2)
    sun.reflect.NativeConstructorAccessorImpl.newInstance (NativeConstructorAccessorImpl.java:57)
    sun.reflect.DelegatingConstructorAccessorImpl.newInstance (DelegatingConstructorAccessorImpl.java:45)
    java.lang.reflect.Constructor.newInstance (Constructor.java:526)
    org.openqa.selenium.remote.ErrorHandler.createThrowable (ErrorHandler.java:193)
    org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed (ErrorHandler.java:145)
    org.openqa.selenium.remote.RemoteWebDriver.execute (RemoteWebDriver.java:554)
    org.openqa.selenium.remote.RemoteWebElement.execute (RemoteWebElement.java:268)
    org.openqa.selenium.remote.RemoteWebElement.getTagName (RemoteWebElement.java:117)
    sun.reflect.NativeMethodAccessorImpl.invoke0 (NativeMethodAccessorImpl.java:-2)
    sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:57)
    sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
    java.lang.reflect.Method.invoke (Method.java:606)
    clojure.lang.Reflector.invokeMatchingMethod (Reflector.java:93)
    clojure.lang.Reflector.invokeNoArgInstanceMember (Reflector.java:313)
    clj_webdriver.util/fn (util.clj:259)
    clojure.lang.MultiFn.invoke (MultiFn.java:231)
    clojure.core$pr_on.invoke (core.clj:3392)
    clojure.core$print_map$fn__5479.invoke (core_print.clj:204)
    clojure.core$print_sequential.invoke (core_print.clj:53)
    clojure.core$print_map.invoke (core_print.clj:207)
    clojure.core/fn (core_print.clj:264)
    clojure.lang.MultiFn.invoke (MultiFn.java:231)
    clojure.core$pr_on.invoke (core.clj:3392)
    clojure.core$pr.invoke (core.clj:3404)
    clojure.tools.nrepl.middleware.pr_values$pr_values$fn$reify__718$fn__720.invoke (pr_values.clj:23)
    clojure.tools.nrepl.middleware.pr_values$pr_values$fn$reify__718.send (pr_values.clj:23)
    clojure.tools.nrepl.middleware.interruptible_eval$evaluate$fn__739$fn__750.invoke (interruptible_eval.clj:67)
    clojure.main$repl$read_eval_print__6625.invoke (main.clj:240)
    clojure.main$repl$fn__6634.invoke (main.clj:257)
    clojure.main$repl.doInvoke (main.clj:257)
    clojure.lang.RestFn.invoke (RestFn.java:1096)
    clojure.tools.nrepl.middleware.interruptible_eval$evaluate$fn__739.invoke (interruptible_eval.clj:56)
    clojure.lang.AFn.applyToHelper (AFn.java:152)
    clojure.lang.AFn.applyTo (AFn.java:144)
    clojure.core$apply.invoke (core.clj:624)
    clojure.core$with_bindings_STAR_.doInvoke (core.clj:1862)
    clojure.lang.RestFn.invoke (RestFn.java:425)
    clojure.tools.nrepl.middleware.interruptible_eval$evaluate.invoke (interruptible_eval.clj:41)
    clojure.tools.nrepl.middleware.interruptible_eval$interruptible_eval$fn__780$fn__783.invoke (interruptible_eval.clj:171)
    clojure.core$comp$fn__4192.invoke (core.clj:2402)
    clojure.tools.nrepl.middleware.interruptible_eval$run_next$fn__773.invoke (interruptible_eval.clj:138)
    clojure.lang.AFn.run (AFn.java:22)
    java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1145)
    java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:615)
    java.lang.Thread.run (Thread.java:745)

bow...@gmail.com

unread,
Oct 4, 2014, 5:44:17 AM10/4/14
to clj-we...@googlegroups.com
I tracked down the source of the problem.  element no longer exists by the time it's ready to be returned.  I've also temporarily fixed my problem by using the java and not returning element.

(send-keys [element s] (.sendKeys (:webelement element) (into-array CharSequence (list s))) element)
Reply all
Reply to author
Forward
0 new messages