etaoin

lread 2022-12-03T00:02:34.532729Z

@adrien615 fix for REPL exception is on master.

🙌 2
lread 2022-12-03T00:03:39.225079Z

I'm finished my maintenance pass on Etaoin. I'll likely cut a new release tomorrow.

chromalchemy 2022-12-03T06:32:45.220739Z

@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?

lread 2022-12-03T22:37:35.598769Z

Interesting. I've not played with this use case at all.

lread 2022-12-03T22:06:32.133309Z

@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?

lread 2022-12-03T22:16:58.302319Z

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}

lread 2022-12-03T22:17:05.189579Z

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

lread 2022-12-03T22:18:24.352159Z

For the jvm exception we see the cause is a read time out.

lread 2022-12-03T22:18:54.333949Z

I'm not suggesting bb should behave differently, just gathering info.

borkdude 2022-12-03T22:37:42.281119Z

@lee I'll get back to you tomorrow on those questions

❤️ 1
borkdude 2022-12-04T21:08:44.315039Z

Sorry, too much going on today. If the issue bother you, please file an issue

lread 2022-12-05T03:22:23.830339Z

Ya no prob. I'll create a small repro to explore it more carefully.