I'm finished my maintenance pass on Etaoin. I'll likely cut a new release tomorrow.
@lee I had the same idea and tried running etaoin with a version of my personal chrome profile. It seemed to work, but then when I went back to use my browser normally there was some confusion (corrouption?) of the profile that I had to resolve, and at least log into chrome again explicitly. It’s been a while, so I forget the details. I think one of the main issues is that google doesn’t want you to be able to log in via webdriver. There are old hacks for this, but I think probably most don’t work anymore. Maybe with firefox it would work better?
Interesting. I've not played with this use case at all.
@borkdude I'm noticing that the cause for etaoin exceptions is important. I don't think that bb reports an exception cause even with --debug right?
Example bb failure from CI:
=== test-properties [bb][firefox]
----- Error --------------------------------------------------------------------
Type: clojure.lang.ExceptionInfo
Message: throw+: {:type :etaoin/http-ex, :driver {:args ("geckodriver" "--port" 49415), :capabilities {:loggingPrefs {:browser "ALL"}}, :process {:proc #object[java.lang.ProcessImpl 0x268a07c "Process[pid=4056, exitValue=\"not exited\"]"], :exit nil, :in #object[java.io.BufferedOutputStream 0x37b16ad6 "java.io.BufferedOutputStream@37b16ad6"], :out #object[java.lang.ProcessBuilder$NullInputStream 0x5fe20b55 "java.lang.ProcessBuilder$NullInputStream@5fe20b55"], :err #object[java.lang.ProcessBuilder$NullInputStream 0x5fe20b55 "java.lang.ProcessBuilder$NullInputStream@5fe20b55"], :prev nil, :cmd ["C:\\SeleniumWebDrivers\\GeckoDriver\\geckodriver.exe" "--port" "49415"]}, :locator "xpath", :type :firefox, :port 49415, :host "127.0.0.1", :url "", :session "f6e18a0a-341a-4c19-9e21-0743184f433d"}, :webdriver-url nil, :host "127.0.0.1", :port 49415, :method :delete, :path "session/f6e18a0a-341a-4c19-9e21-0743184f433d", :payload nil}
Data: {:type :etaoin/http-ex, :driver {:args ("geckodriver" "--port" 49415), :capabilities {:loggingPrefs {:browser "ALL"}}, :process {:proc #object[java.lang.ProcessImpl 0x268a07c "Process[pid=4056, exitValue=1]"], :exit nil, :in #object[java.io.BufferedOutputStream 0x37b16ad6 "java.io.BufferedOutputStream@37b16ad6"], :out #object[java.lang.ProcessBuilder$NullInputStream 0x5fe20b55 "java.lang.ProcessBuilder$NullInputStream@5fe20b55"], :err #object[java.lang.ProcessBuilder$NullInputStream 0x5fe20b55 "java.lang.ProcessBuilder$NullInputStream@5fe20b55"], :prev nil, :cmd ["C:\\SeleniumWebDrivers\\GeckoDriver\\geckodriver.exe" "--port" "49415"]}, :locator "xpath", :type :firefox, :port 49415, :host "127.0.0.1", :url "", :session "f6e18a0a-341a-4c19-9e21-0743184f433d"}, :webdriver-url nil, :host "127.0.0.1", :port 49415, :method :delete, :path "session/f6e18a0a-341a-4c19-9e21-0743184f433d", :payload nil}
Location: D:\a\etaoin\etaoin\src\etaoin\api.clj:3620:12
----- Context ------------------------------------------------------------------
3616: (try (delete-session driver)
3617: (catch Exception e
3618: (when (not (= 404 (:status (ex-data e))))
3619: ;; the exception was caused by something other than "session not found"
3620: (throw e))))
^--- throw+: {:type :etaoin/http-ex, :driver {:args ("geckodriver" "--port" 49415), :capabilities {:loggingPrefs {:browser "ALL"}}, :process {:proc #object[java.lang.ProcessImpl 0x268a07c "Process[pid=4056, exitValue=\"not exited\"]"], :exit nil, :in #object[java.io.BufferedOutputStream 0x37b16ad6 "java.io.BufferedOutputStream@37b16ad6"], :out #object[java.lang.ProcessBuilder$NullInputStream 0x5fe20b55 "java.lang.ProcessBuilder$NullInputStream@5fe20b55"], :err #object[java.lang.ProcessBuilder$NullInputStream 0x5fe20b55 "java.lang.ProcessBuilder$NullInputStream@5fe20b55"], :prev nil, :cmd ["C:\\SeleniumWebDrivers\\GeckoDriver\\geckodriver.exe" "--port" "49415"]}, :locator "xpath", :type :firefox, :port 49415, :host "127.0.0.1", :url "", :session "f6e18a0a-341a-4c19-9e21-0743184f433d"}, :webdriver-url nil, :host "127.0.0.1", :port 49415, :method :delete, :path "session/f6e18a0a-341a-4c19-9e21-0743184f433d", :payload nil}
Compared with a clojure jvm failure:
Error: Exception in thread "main" clojure.lang.ExceptionInfo: throw+: {:type :etaoin/http-ex, :driver {:type :chrome, :host "127.0.0.1", :port 55296, :url "", :locator "xpath", :capabilities {:loggingPrefs {:browser "ALL"}, :chromeOptions {:args ("--no-sandbox")}}, :args ("chromedriver" "--port=55296"), :process {:proc #object[java.lang.ProcessImpl 0x3f491bd2 "Process[pid=1208, exitValue=\"not exited\"]"], :exit nil, :in #object[java.io.BufferedOutputStream 0x74947f2b "java.io.BufferedOutputStream@74947f2b"], :out #object[java.lang.ProcessBuilder$NullInputStream 0x1b74dd88 "java.lang.ProcessBuilder$NullInputStream@1b74dd88"], :err #object[java.lang.ProcessBuilder$NullInputStream 0x1b74dd88 "java.lang.ProcessBuilder$NullInputStream@1b74dd88"], :prev nil, :cmd ["C:\\SeleniumWebDrivers\\ChromeDriver\\chromedriver.exe" "--port=55296"]}}, :webdriver-url nil, :host "127.0.0.1", :port 55296, :method :post, :path "session", :payload {:desiredCapabilities {:loggingPrefs {:browser "ALL"}, :chromeOptions {:args ("--no-sandbox")}}}} {:type :etaoin/http-ex, :driver {:type :chrome, :host "127.0.0.1", :port 55296, :url "", :locator "xpath", :capabilities {:loggingPrefs {:browser "ALL"}, :chromeOptions {:args ("--no-sandbox")}}, :args ("chromedriver" "--port=55296"), :process {:proc #object[java.lang.ProcessImpl 0x3f491bd2 "Process[pid=1208, exitValue=1]"], :exit nil, :in #object[java.io.BufferedOutputStream 0x74947f2b "java.io.BufferedOutputStream@74947f2b"], :out #object[java.lang.ProcessBuilder$NullInputStream 0x1b74dd88 "java.lang.ProcessBuilder$NullInputStream@1b74dd88"], :err #object[java.lang.ProcessBuilder$NullInputStream 0x1b74dd88 "java.lang.ProcessBuilder$NullInputStream@1b74dd88"], :prev nil, :cmd ["C:\\SeleniumWebDrivers\\ChromeDriver\\chromedriver.exe" "--port=55296"]}}, :webdriver-url nil, :host "127.0.0.1", :port 55296, :method :post, :path "session", :payload {:desiredCapabilities {:loggingPrefs {:browser "ALL"}, :chromeOptions {:args ("--no-sandbox")}}}}
at slingshot.support$stack_trace.invoke(support.clj:201)
at etaoin.impl.client$call.invokeStatic(client.cljc:131)
at etaoin.impl.client$call.invoke(client.cljc:95)
at etaoin.api$execute.invokeStatic(api.clj:235)
at etaoin.api$execute.invoke(api.clj:209)
at etaoin.api$create_session.invokeStatic(api.clj:262)
at etaoin.api$create_session.doInvoke(api.clj:252)
at clojure.lang.RestFn.invoke(RestFn.java:423)
at etaoin.api$_connect_driver.invokeStatic(api.clj:3607)
at etaoin.api$_connect_driver.doInvoke(api.clj:3520)
at clojure.lang.RestFn.invoke(RestFn.java:423)
at etaoin.api$boot_driver.invokeStatic(api.clj:3665)
at etaoin.api$boot_driver.invoke(api.clj:3640)
at etaoin.ide_test$fixture_browser$fn__9722.invoke(ide_test.clj:34)
at etaoin.ide_test$fixture_browser.invokeStatic(ide_test.clj:34)
at etaoin.ide_test$fixture_browser.invoke(ide_test.clj:30)
at clojure.test$compose_fixtures$fn__9203$fn__9204.invoke(test.clj:693)
at clojure.test$default_fixture.invokeStatic(test.clj:686)
at clojure.test$default_fixture.invoke(test.clj:682)
at clojure.test$compose_fixtures$fn__9203.invoke(test.clj:693)
at clojure.test$test_vars$fn__9235.invoke(test.clj:734)
at etaoin.ide_test$report_browsers.invokeStatic(ide_test.clj:49)
at etaoin.ide_test$report_browsers.invoke(ide_test.clj:47)
at clojure.test$compose_fixtures$fn__9203$fn__9204.invoke(test.clj:693)
at clojure.test$default_fixture.invokeStatic(test.clj:686)
at clojure.test$default_fixture.invoke(test.clj:682)
at clojure.test$compose_fixtures$fn__9203.invoke(test.clj:693)
at clojure.test$test_vars.invokeStatic(test.clj:730)
at clojure.test$test_all_vars.invokeStatic(test.clj:736)
at clojure.test$test_ns.invokeStatic(test.clj:757)
at clojure.test$test_ns.invoke(test.clj:742)
at clojure.core$map$fn__5587.invoke(core.clj:2747)
at clojure.lang.LazySeq.sval(LazySeq.java:40)
at clojure.lang.LazySeq.seq(LazySeq.java:49)
at clojure.lang.Cons.next(Cons.java:39)
at clojure.lang.RT.boundedLength(RT.java:1785)
at clojure.lang.RestFn.applyTo(RestFn.java:130)
at clojure.core$apply.invokeStatic(core.clj:659)
at clojure.test$run_tests.invokeStatic(test.clj:767)
at clojure.test$run_tests.doInvoke(test.clj:767)
at clojure.lang.RestFn.applyTo(RestFn.java:137)
at clojure.core$apply.invokeStatic(core.clj:657)
at clojure.core$apply.invoke(core.clj:652)
at cognitect.test_runner$test.invokeStatic(test_runner.clj:74)
at cognitect.test_runner$test.invoke(test_runner.clj:62)
at cognitect.test_runner.api$do_test.invokeStatic(api.clj:14)
at cognitect.test_runner.api$do_test.invoke(api.clj:6)
at cognitect.test_runner.api$test.invokeStatic(api.clj:28)
at cognitect.test_runner.api$test.invoke(api.clj:16)
at clojure.lang.Var.invoke(Var.java:381)
at babashka.cli.exec$main.invokeStatic(exec.clj:64)
at babashka.cli.exec$main.doInvoke(exec.clj:62)
at clojure.lang.RestFn.applyTo(RestFn.java:137)
at clojure.core$apply.invokeStatic(core.clj:657)
at clojure.core$apply.invoke(core.clj:652)
at babashka.cli.exec$_main.invokeStatic(exec.clj:79)
at babashka.cli.exec$_main.doInvoke(exec.clj:66)
at clojure.lang.RestFn.applyTo(RestFn.java:137)
at clojure.lang.Var.applyTo(Var.java:702)
at clojure.core$apply.invokeStatic(core.clj:657)
at clojure.main$main_opt.invokeStatic(main.clj:317)
at clojure.main$main_opt.invoke(main.clj:313)
at clojure.main$main.invokeStatic(main.clj:424)
at clojure.main$main.doInvoke(main.clj:387)
at clojure.lang.RestFn.applyTo(RestFn.java:137)
at clojure.lang.Var.applyTo(Var.java:702)
at clojure.main.main(main.java:37)
Caused by: java.net.SocketTimeoutException: Read timed out
at java.base/java.net.SocketInputStream.socketRead0(Native Method)
at java.base/java.net.SocketInputStream.socketRead(SocketInputStream.java:115)
at java.base/java.net.SocketInputStream.read(SocketInputStream.java:168)
at java.base/java.net.SocketInputStream.read(SocketInputStream.java:140)
at org.apache.http.impl.io.SessionInputBufferImpl.streamRead(SessionInputBufferImpl.java:137)
at org.apache.http.impl.io.SessionInputBufferImpl.fillBuffer(SessionInputBufferImpl.java:153)
at org.apache.http.impl.io.SessionInputBufferImpl.readLine(SessionInputBufferImpl.java:280)
at org.apache.http.impl.conn.DefaultHttpResponseParser.parseHead(DefaultHttpResponseParser.java:138)
at org.apache.http.impl.conn.DefaultHttpResponseParser.parseHead(DefaultHttpResponseParser.java:56)
at org.apache.http.impl.io.AbstractMessageParser.parse(AbstractMessageParser.java:259)
at org.apache.http.impl.DefaultBHttpClientConnection.receiveResponseHeader(DefaultBHttpClientConnection.java:163)
at org.apache.http.impl.conn.CPoolProxy.receiveResponseHeader(CPoolProxy.java:157)
at org.apache.http.protocol.HttpRequestExecutor.doReceiveResponse(HttpRequestExecutor.java:273)
at org.apache.http.protocol.HttpRequestExecutor.execute(HttpRequestExecutor.java:125)
at org.apache.http.impl.execchain.MainClientExec.execute(MainClientExec.java:272)
at org.apache.http.impl.execchain.ProtocolExec.execute(ProtocolExec.java:186)
at org.apache.http.impl.execchain.RetryExec.execute(RetryExec.java:89)
at org.apache.http.impl.execchain.RedirectExec.execute(RedirectExec.java:110)
at org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:185)
at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:83)
at clj_http.core$request.invokeStatic(core.clj:621)
at clj_http.core$request.invoke(core.clj:546)
at clj_http.core$request.invokeStatic(core.clj:547)
at clj_http.core$request.invoke(core.clj:546)
at clojure.lang.Var.invoke(Var.java:381)
at clj_http.client$wrap_request_timing$fn__6267.invoke(client.clj:1083)
at clj_http.headers$wrap_header_map$fn__5128.invoke(headers.clj:152)
at clj_http.client$wrap_query_params$fn__6147.invoke(client.clj:817)
at clj_http.client$wrap_basic_auth$fn__6153.invoke(client.clj:840)
at clj_http.client$wrap_oauth$fn__6158.invoke(client.clj:857)
at clj_http.client$wrap_user_info$fn__6167.invoke(client.clj:877)
at clj_http.client$wrap_url$fn__6249.invoke(client.clj:1035)
at clj_http.client$wrap_decompression$fn__5894.invoke(client.clj:416)
at clj_http.client$wrap_input_coercion$fn__6059.invoke(client.clj:630)
at clj_http.client$wrap_additional_header_parsing$fn__6084.invoke(client.clj:685)
at clj_http.client$wrap_output_coercion$fn__6046.invoke(client.clj:574)
at clj_http.client$wrap_exceptions$fn__5841.invoke(client.clj:250)
at clj_http.client$wrap_accept$fn__6099.invoke(client.clj:728)
at clj_http.client$wrap_accept_encoding$fn__6106.invoke(client.clj:750)
at clj_http.client$wrap_content_type$fn__6093.invoke(client.clj:711)
at clj_http.client$wrap_form_params$fn__6214.invoke(client.clj:959)
at clj_http.client$wrap_nested_params$fn__6235.invoke(client.clj:993)
at clj_http.client$wrap_flatten_nested_params$fn__6244.invoke(client.clj:1017)
at clj_http.client$wrap_method$fn__6172.invoke(client.clj:893)
at clj_http.cookies$wrap_cookies$fn__4001.invoke(cookies.clj:128)
at clj_http.links$wrap_links$fn__5522.invoke(links.clj:63)
at clj_http.client$wrap_unknown_host$fn__6252.invoke(client.clj:1046)
at etaoin.impl.client$http_request.invokeStatic(client.cljc:89)
at etaoin.impl.client$http_request.invoke(client.cljc:86)
at etaoin.impl.client$call$fn__6390.invoke(client.cljc:127)
at etaoin.impl.client$call.invokeStatic(client.cljc:127)
... 65 more
For the jvm exception we see the cause is a read time out.
I'm not suggesting bb should behave differently, just gathering info.
Sorry, too much going on today. If the issue bother you, please file an issue
Ya no prob. I'll create a small repro to explore it more carefully.