Automate clicking and typing
Most of what you do at the keyboard is the same fifty clicks and the same fifty fields, over and over. axiom drives Chrome so the click-and-type work happens automatically. From a Google Sheet, on a schedule, or one row at a time. There are three ways to start, with no code, with code, or with a Claude skill.
What I mean by automating clicking and typing
Automating clicking and typing means a bot does the repetitive UI work you would otherwise do by hand. Clicking through a multi-step form. Filling the same five fields on a hundred rows. Pressing tab between inputs. Hitting submit. Reading the confirmation. Going back and doing it again with the next row of data. The bot opens the site in Chrome, walks through the flow the way a person would, and writes the result back to wherever you want it.
Why bots are better at this than people
Web forms are structured, and structured work is what bots are built for. A person fills a form by hand: read the field, find the value in a sheet, type it, move to the next field, repeat. A bot reads the row and fills the form atomically. Every field at once. Then submits and moves to the next row. Same outcome, no fatigue, no copy-paste errors, no missed fields when the page scrolls.
The other thing bots do well: pace. Every form has a tolerance for how fast you can submit. Hit it manually and you're either too slow (boring) or too fast (the page hasn't finished loading). A bot waits for the form to settle before each interaction.
Who this is for
This is for anyone who fills the same form over and over. Operations teams entering orders from a CSV. Recruiters keying candidate details into an ATS. Finance teams moving rows from a sheet into an accounting system. Sales ops logging activity in a CRM that doesn't have a bulk import. QA running the same click-through smoke test on every release. If your weekly routine includes "open this form, fill these fields, submit, repeat for every row," a bot can take that off your plate.
How I'd approach it
Start by listing the click work, not the data work. "Open URL, click cookie banner away, click 'Add new', fill name, fill email, click submit, capture confirmation, repeat." Each line is a step. Build the steps in the Chrome extension. Point and click to select each element, pick the column it maps to from your sheet, then loop the rows.
Always test one row end-to-end before you loop. It's a lot easier to fix a selector than to undo a hundred wrong submissions.
Automate from a description
Describe the work in plain words in the Chrome extension and it builds the steps for you. Tell it the URL, the form fields, and where the data comes from. Explore no-code.
To the right is an example. Describe your click-and-type routine and let the AI lay out the steps.
Chrome extensionInstructions
- Open the order entry form on my admin site42 / 500
- For each row in my Google Sheet, fill the name field52 / 500
- Fill the email and order ID fields from the same row52 / 500
- Click the Submit button23 / 500
- Capture the confirmation number into a results column53 / 500
- Move to the next row20 / 500
Automate in code
Build with code. You do not have to write the script by hand. Describe the form to our Claude skill and it generates a ready-to-run Node script you own, then debugs it with you, fixing a selector that stopped matching or a step that stalls, until the run is clean. Prefer to write it yourself? Explore the code tool. Either way, the script looks like this.
These are axiom's step functions, the same step library that powers the no-code builder, available as code. Describe the form to the Claude skill and it generates and debugs this script for you. It runs on our cloud Chromium, with nothing to manage.
Generate it with the Claude skill1import { AxiomApi } from "axiom-api";2 3const axiom = new AxiomApi(process.env.AXIOM_API_KEY);4 5await axiom.browserOpen();6try {7 // The values would come from your Google Sheet8 await axiom.goto("https://example.com/order");9 await axiom.enterText('input[name="name"]', "Ada Lovelace");10 await axiom.enterText('input[name="email"]', "ada@example.com");11 await axiom.enterText('input[name="orderId"]', "A-101");12 await axiom.click('button[type="submit"]');13 14 const confirmation = await axiom.scrape('.confirmation-number');15 console.log(confirmation);16} finally {17 await axiom.browserClose();18}19 Build with a Claude skill
Build no-code or code bots with a skill.
Add the Claude skill and describe the click-and-type routine. It builds the bot for you, no-code or code, picking the right step for each click, type, and read.

What can you automate?
Most click-driven web work. A couple of cases worth knowing first.
Works well
- Bulk form filling from a Google Sheet
- Multi-step flows (cookie banner → search → result → submit)
- Reading a confirmation or error message after each submission
- Sites that gate behind a login (with stored cookies)
- Scheduling the routine to run while you're away
Harder
- Dynamic forms that load fields in pieces (extra waits help)
- Captchas (use a solver step or a saved session)
- Forms inside iframes (iframe support is on, just turn it on per step)
Don't try
- Anything against the target site's terms of service
- Spamming form submissions or creating fake accounts
- Pages that explicitly forbid automation in their TOS
What I'd watch out for
A few patterns trip up newcomers to click-and-type automation.
Wait for the page, not the clock
Don't insert hard delays everywhere. Wait for a specific element to appear. "wait for the submit button to become enabled" beats "wait 3 seconds" every time, because pages are unpredictable but selectors are stable.
Selectors that survive redesigns
Pick selectors that describe what an element is, not where it sits. input[name="email"] survives a redesign that moves the input from row 2 to row 3; form > input:nth-child(2) doesn't.
Test one row
Run a single row of data end-to-end before you loop. It catches the selector that targeted the wrong element, the validation that pops up unexpectedly, the cookie banner the bot missed. Fixing one bad row is fixable; undoing fifty bad submissions is much less fun.
Cookie banners
Most forms hide behind a cookie banner that has to be clicked through first. Either store the "accepted" cookie or add a step that dismisses the banner if it's present.