بنقرة واحدة
browser
Control a browser programmatically. Use for integration testing, manual validation, and experimentation.
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
القائمة
Control a browser programmatically. Use for integration testing, manual validation, and experimentation.
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
استنادا إلى تصنيف SOC المهني
Evaluate Clojure code via nREPL using clj-nrepl-eval. Always load this skill
Style components with daisy-ui. Use any time styled html components are used.
Repair Clojure reader syntax errors caused by unbalanced delimiters ((), [], {}) to fix errors like "EOF while reading", "Unexpected EOF", "Unmatched delimiter", or "Unbalanced delimiter".
Datastar framework guidance for adding data-* attributes, frontend actions, reactive signals, and backend SSE/SDK usage (including Clojure). Use when modifying HTML/Hiccup with Datastar attributes, handling Datastar requests, patching elements/signals, or tracing signal updates.
See what the program is doing with logs. Use when using the development http server or to see the value of log or trace statements
| name | browser |
| description | Control a browser programmatically. Use for integration testing, manual validation, and experimentation. |
Control a browser with etaoin, a clojure library, using Clojure.
Always start browser sessions with e/with-chrome-headless so WebDriver and Chromium processes are cleaned up automatically.
Do not create a top-level (def driver ...) in examples.
An example at the REPL:
(require '[etaoin.api :as e]
'[etaoin.keys :as k]
'[clojure.string :as str])
(e/with-chrome-headless driver
(e/driver-type driver) ;; => :chrome
(e/go driver "http://localhost:3000/demo/datatable")
;; make sure we aren't using a large screen layout
(e/set-window-size driver {:width 1280 :height 800})
;; wait for the search input to load
(e/wait-visible driver [{:tag :input :name :search}]))
Use css selectors or xpath to select elements.
{:css "input#uname[name='username']"}
{:xpath ".//input[@id='uname']"}
For example:
(e/fill driver
{:css "input#uname[name='username']"}
" CSS selector")
Use e/wait-visible to wait for elements to be visible. e/wait-has-text and e/wait-has-text-everywhere can be used to wait until text is visible on the page.
e/wait should be used only when the other wait options don't make sense.
An element may not be visible on the page. Use e/scroll
Use js-execute to evaluate a Javascript code in the browser:
(e/js-execute driver "alert('Hello from Etaoin!')")
(e/dismiss-alert driver)
The following functions are useful for interacting with the page, filling forms, etc:
e/fille/fill-multie/fill-humane/fill-human-multie/clicke/double-clickTake full screen screenshots with e/screenshot
(e/screenshot driver "target/etaoin-play/screens1/page.png")
Screenshot an element:
(e/screenshot-element driver {:tag :form :class :formy} "target/etaoin-play/screens3/form-element.png")