browser-use: Web Automation Agents Without the Selector Tax

Classic browser automation has a tax you pay forever: selectors. You write a CSS path. The markup shifts. The test goes red. You weren't testing the product anymore — you were testing whether last month's DOM still exists.
Agent-style browser automation flips the contract. You describe the goal. The model decides what to click and fill. You spend your time on permissions, failure modes, and whether the goal was tight enough — not on chasing div > div > button:nth-child(3).
browser-use is the stack I walk from empty environment to a LinkedIn automation scenario: setup, agent config, debugging, existing browser profiles, structured data.
In the video#
- Environment setup from scratch (Python 3.11+)
- Agent configuration and debug settings
- Working with existing browser profiles
- Real LinkedIn automation use case
- Structured data handling
Resources:
- Video code: github.com/XamHans/linkedin-automation-browser-use
- Docs: docs.browser-use.com
- Library: github.com/browser-use/browser-use
What changes in your head#
Playwright/Selenium thinking: "Find this element. Click it. Assert that text."
browser-use thinking: "Achieve this outcome. Log what you did. Stop when the goal is met or clearly stuck."
That second framing is closer to how you actually use a browser — and closer to how coding agents should verify UI work. It's also easier to get wrong: vague goals produce expensive wandering. Tight goals with clear stop conditions produce useful runs.
Profiles and the privacy line#
One underrated piece in the video: working with existing browser profiles. That's how you automate flows that need a real logged-in session — and it's also where you decide whether cloud model APIs are allowed to see that context.
If the workflow touches private tabs or session cookies you don't want leaving the machine, local models (Ollama and friends) become an architecture choice, not a hobby preference.
Treat it like production software#
A browser agent is a probabilistic UI driver. That means:
- Log actions.
- Bound the goal.
- Prefer structured outputs when you need data out, not vibes.
- Expect flake — design for retries and human checkpoints on destructive steps.
"Just let it explore LinkedIn" is how you get banned accounts and surprise messages. "Run this checklist with these stop rules" is how you get a tool.
Takeaway#
If you're still maintaining selector soup for flows a junior could describe in one paragraph, try the agent framing once on a non-destructive task. Setup is Python + API key + a tight goal. The LinkedIn path in the video is the proof that "natural language → browser actions" is past the toy stage — as long as you keep the engineering discipline the selectors used to force on you.
AI engineering, weekly.
Join developers getting practical AI engineering in their inbox.