Fork me on GitHub

I'm using etaoin, and before anything else, i want to say, it's an amazing library, and very comfortable to use it, specially in a REPL driven environment like Clojure can provide 😄 so, i'm using etaoin with firefox was trying to open new windows, and i stumbled on the function create-session , i quote the docs:

(create-session driver & [capabilities])

Initiates a new session for a driver. Opens a browser window as a
side-effect. All the further requests are made within specific
session. Some drivers may work with only one active session. Returns
a long string identifier.
And i'm trying on my repl:
(def driver (etaoin/firefox {:host "localhost"}))
(etaoin/create-session driver)

>> Execution error (ExceptionInfo) at (support.clj:201).
throw+: {:response {:value {:error "session not created", :message "Session is already started", :stacktrace ""}}, :path "session", :payload {:desiredCapabilities {}}, :method :post, :type :etaoin/http-error, :port 4444, :host "localhost", :status 500, :driver {:type :firefox, :host "localhost", :port 4444, :url "", :locator "xpath", :capabilities nil}}
As the doc says Some drivers may work with only one active session. is this the case of firefox? and also, i saw this on mozilla docs: Which seems to be a way to open a window, but i didn't found this function on etaoin, any thoughts ?


It seems firefox geckodriver (it's webdriver implementation), actually do requires one geckodriver instance per session: And about opening a new window, i don't know if it's a function that is really missing from etaoin's API, but here is the code for opening a new window:

(def driver (etaoin/firefox {:host "localhost"}))

(etaoin/execute {:driver driver
                   :method :post
                   :path [:session (:session driver) :window :new]
                   :data {:type "window"}})