Show HN: Autotab – An AI-powered Chrome extension to create Selenium scripts (autotab.com)
Autotab is a Chrome extension that writes Selenium code to mirror your actions as you navigate the browser. See it in action: https://youtu.be/UypAcozIaoo
Autotab lets you create browser automations that actually work. We designed it around two principles:
1. Show, don’t tell: In a domain like web automation, it's often easier to *show* the model what you want rather than to explain it in sentences.
2. Code is the best output: Code is easy to inspect and enables manual tweaking of the model’s suggested actions. On top of that, code output avoids lock in and is straightforward to extend and integrate with larger projects.
Autotab runs as a Chrome extension. As you navigate in the browser, autotab generates the Selenium code to reproduce your actions. You can copy that code into your own project or use our starter GitHub repo to get your automation up and running in <5 minutes: https://github.com/Planetary-Computers/autotab-starter.We'd love to hear what you think!
128 comments
[ 4.6 ms ] story [ 206 ms ] thread-However, I'm getting a 404 on your Github link -- is that `autotab-starter` repo private?- (n/m -- looks like it's working now!)
A standard for what, exactly? Selecting HTML elements? You could say the same about XPath.
Both are implementation details tightly coupled to the code instead of being driven by the “human” elements of the UI, such as the visible text, labels, etc.
I disagree. Playwright's locators are pretty powerful compared to standard css/xpath selectors.
For example it includes layout based selectors.
https://playwright.dev/docs/other-locators#css-matching-elem...
https://testing-library.com/
Please make the switch to selenium 4, so that it is kept up to date with the rest of the selenium ecosystem e.g. undetectable browsers
Very cool! I totally expect testing to be one of the killer apps for AI. And this is an easy way to get there.
How do you ensure the AI isn't hallucinating any details in the generated code?
Right now we have the basic sanity check that the Selenium xpath selects exactly one element in the DOM. Going forward I think the best way to do this is to have a live preview where you can see the mirrored browser copy your last action and debug if it errors or isn't what you wanted.
That is a potential problem Because at this point the user will still need good HTML/Selenium/coding knowledge to debug. We ran into the same issue using chatgpt generated scripts for ui.vision. Once a QA person has to figure out why some generated code does not work, it becomes a hassle and removes any initial advantage over the classic record & replay approach.
But there's something in between where you can say "try again" or even give high level feedback like "don't click the element with that exact title, just click whichever one is first in the list". My working hypothesis is that these are bigger than the ones where you need coding knowledge. Certainly this category will only grow as language models become better.
We picked Selenium because it seems much more widely used at least in the Python world (selenium has about 10x more downloads on PyPI than playwright). My guess is that's at least partly because Playwright is more focused on the JS/TS ecosystem and testing.
To my team, selenium’s only advantage in the python ecosystem is that it is easier to hire people with experience. However, anyone familiar with selenium is likely to pick up playwright extremely quickly anyways
Playwright does ship a pytest integration but it is not required
Some highlights:
1. Better waiting — everything is auto-waited and auto-retried by default
2. Easy to install browsers — no need to get separate webdriver browsers. Just run “playwright install chromium”
3. Full, accurate typing
4. Trace viewing to step through a script execution
5. Async support
6. (Arguably) more pythonic syntax and easier to pick up/ train people
I really enjoyed mastering selenium over the years, but I struggle to think of a use case for it outside of maintaining legacy script suites anymore. Playwright just does it better.
Selenium is quite outdated, though still widely used. It's much older. I would look at downloads over time / rate of change, not total downloads.
My hot take- don't hook yourselves to outdated tech.
Don't take my word for it- go try out selenium, Cypress, and playwright and draw your own conclusions.
https://github.com/w3c/webdriver-bidi
https://w3c.github.io/webdriver-bidi/
Google wrote a good explainer about WebDriver BiDi here:
https://developer.chrome.com/articles/webdriver-bidi/
Going forward we’re excited to experiment with more intelligence at runtime e.g. using AI to try to recover if the selector wasn’t found.
This is definitely more of a pivot, though the ZTool product also went through a few bigger iterations itself. I think my learnings from building and talking to users the last few months boil down to two main things that led me to work on autotab.
BTW I don’t normally use Chrome- I know why you would start with that, but it would be great to see a Firefox or even Safari version of this.
selenium.common.exceptions.WebDriverException: Message: Service /opt/homebrew/bin/chromedriver unexpectedly exited. Status code was: -9
My question would be what does waggledance do that a GPT4 reply would not provide besides the (really well done) UI?
In my experience the way the tasks are generated and broken down is pretty much what I get when I ask ChatGPT.
Longer term I think you'd monetize the infrastructure to run the automations at scale in the cloud.
I had some silly extension a long time ago but after receiving a lot of emails from Google saying that they were killing the ecosystem I've dropped them.
Also my experience differs more broadly, I use browser extensions quite a bit, e.g. for ad blocking and password management. Afaik Honey was basically a browser extension and was bought by Paypal for $4B.
Now: You can no longer create new paid extensions or in-app items. This began as a temporary restriction in March 2020 due to the COVID-19 situation. This change is now made permanent. December 1, 2020: Free trials are disabled. The "Try Now" button in CWS will no longer be visible, and in-app free trial requests will result in an error. February 1, 2021: Your existing items and in-app purchases can no longer charge money with Chrome Web Store payments. You can still query license information for previously paid purchases and subscriptions. (The licensing API will accurately reflect the status of active subscriptions, but these subscriptions won’t auto-renew.) At some future time: The licensing API will no longer allow you to determine license status for your users.
I have the whole thing in my inbox if anyone is interested
A bit tangential but I was curious what you used to record the demo video on your landing page with those zoom-in animations during critical moments. I’d like to record something like that for some of my side projects and thought your video looked rather polished.
I used https://www.screen.studio/ for the demo and past demos, it works quite well I find though it can get a bit too excited on the zoom ins and I have to cut out some of them
One way I can see around it is to not put anything sensitive in during the record, but sometimes I might need to enter a password etc.
For sensitive information that appears in the DOM during recording, there is a chance it could be included in a prompt to the LLM. We're using OpenaAI via API, which is SOC 2 & 3 compliant and does not use data for model training (supposedly) https://trust.openai.com
If you can be playwright for automation instead of testing - that'd be a biiiig market. Lot's and lot's of scrapers out there and it's a market microsoft is not interested in.
But it’s less than 5% of selectors across the code base
Also Selenium does have 10x the downloads of Playwright on PyPI - is Python different or do you think that metric is misleading?
Edit: as they both use the same interface it might not be too bad to support both?
It can record a user-journey and print out a puppeteer script.
Going forward I think the flexibility of Python code & the Python ecosystem will make it easier to build a bunch more things we want to do. For example, a lot of browser-based work is not totally deterministic but rather requires more intelligence during the automation, e.g. summarizing information on a web page or dynamically filling in a text box with the right answer.
Specifically, assume I have a bunch of open tabs, each with an identical element, say the Full Screen button on Youtube video pages. Can I record "Exit Full Screen, move to next tab, enter Full Screen of the video on the page" with Autotab?
Why the logged out cookies? That way even if someone gets the cookies they still need the password, but the automation can log in with just your password, no 2FA needed.
For example, add to cart, if the LLM detect it's out of stock (a rule), then do some other action.
What's the possibility of LLM-reinforced, rules based branching logic like this being possible with your software in the future?
I suggest a Discord group for Autotab to start building up a community! Looking forward.
Why is logging into Google a requirement?
But i assume it means Bring Your Own (Open AI Authentication Key).
By the looks of it, I am taking a slightly different approach than you. I am using LLM only to identify elements, but the actual generators are created using https://ray.run/browser-extension
Edit: or just disabled in general cos it's super annoying