Skip to main content

LLM-powered web automation library with autonomous agents

Project description

webtask

PyPI version Tests License: MIT Documentation

Easy-to-use LLM-powered browser automation — from autonomous tasks to element-level control.

Why webtask?

  • Natural language tasks: agent.do("add 3 items to cart")
  • Natural language selectors: agent.select("the search input")

See Features for more.

Demo

await agent.do("add 3 Flat-Head Wood Screws to the cart")

Demo

View full example

Quick Start

Install webtask and Playwright:

pip install pywebtask
playwright install chromium

Then run your first automation:

from webtask import Webtask
from webtask.integrations.llm import Gemini

wt = Webtask()
agent = await wt.create_agent(
    llm=Gemini(model="gemini-2.5-flash"),
    wait_after_action=1.0,
)

await agent.goto("https://practicesoftwaretesting.com")
await agent.wait(3)

# select: pick elements with natural language
search = await agent.select("the search input")
await search.fill("pliers")

# do: simple or complex tasks — agent figures out the steps
await agent.do("click search and add the first product to cart")

# extract: get structured data from the page
price = await agent.extract("the cart total price")

# verify: check conditions
assert await agent.verify("cart has 1 item")

Features

Four core operations

await agent.do("click search and add first product to cart")  # Autonomous tasks
element = await agent.select("the search input")              # Element selection
data = await agent.extract("the cart total", MySchema)        # Data extraction
assert await agent.verify("cart has 1 item")                  # Verification

Stateful agents — Agent remembers context across tasks

await agent.do("Add pliers to cart")
await agent.do("Add a hammer too")  # Remembers previous action
agent.clear_history()               # Reset when needed

Two modes — DOM-based or pixel-based interaction

agent = await wt.create_agent(llm=llm, mode="dom")     # Element IDs (default)
agent = await wt.create_agent(llm=llm, mode="pixel")   # Screen coordinates

Browser integration — Works with new or existing browsers

agent = await wt.create_agent(llm=llm)                                  # New browser
agent = await wt.create_agent_with_browser(llm=llm, browser=browser)    # Existing browser
agent = wt.create_agent_with_context(llm=llm, context=context)          # Existing context
agent = wt.create_agent_with_page(llm=llm, page=page)                   # Existing page

Error handling — Handle task failures gracefully

try:
    await agent.do("Add item to cart")
except TaskAbortedError as e:
    print(f"Task failed: {e}")

When to use webtask?

Use webtask when you know what you want to automate but don't want to deal with how (finding selectors, handling dynamic DOM, etc.).

Not ideal for:

  • High-volume scraping (use Scrapy, requests)
  • Fully autonomous agents for complex, open-ended tasks

Supported LLMs

from webtask.integrations.llm import Gemini, GeminiComputerUse, Bedrock

Gemini(model="gemini-2.5-flash")                                # 2.5 Flash
GeminiComputerUse(model="gemini-2.5-computer-use-preview")      # Visual mode
Bedrock(model="anthropic.claude-sonnet-4-20250514-v1:0")        # Claude 4 Sonnet (WIP)

You can also use your own LLM by implementing the LLM interface. See the custom LLM guide.

Links

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pywebtask-0.27.0.tar.gz (67.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pywebtask-0.27.0-py3-none-any.whl (98.8 kB view details)

Uploaded Python 3

File details

Details for the file pywebtask-0.27.0.tar.gz.

File metadata

  • Download URL: pywebtask-0.27.0.tar.gz
  • Upload date:
  • Size: 67.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for pywebtask-0.27.0.tar.gz
Algorithm Hash digest
SHA256 3a7ae8f31fc466166a252fffb80f114476b9f670fb78c1926689f675b74bb950
MD5 7aa9afe0ca2f7b3abac3cb0b0e8c88f0
BLAKE2b-256 a2614f4f41c704c24ecbfe6319b65f5de70e4faf2d589b4d5a6dd1c44237020b

See more details on using hashes here.

Provenance

The following attestation bundles were made for pywebtask-0.27.0.tar.gz:

Publisher: publish.yml on steve-z-wang/webtask

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pywebtask-0.27.0-py3-none-any.whl.

File metadata

  • Download URL: pywebtask-0.27.0-py3-none-any.whl
  • Upload date:
  • Size: 98.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for pywebtask-0.27.0-py3-none-any.whl
Algorithm Hash digest
SHA256 85d141d8f464e729ab7b75a54c8042cc67d3536e4d2e856c68ad80e004c46fb4
MD5 561d1857737ceca00e68694b5aa26656
BLAKE2b-256 2bd8099d3ccc303ef6ac3de89d84678fd042aa915c8a53f2c75e605f9fc73414

See more details on using hashes here.

Provenance

The following attestation bundles were made for pywebtask-0.27.0-py3-none-any.whl:

Publisher: publish.yml on steve-z-wang/webtask

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page