Skip to main content

Browser automation service with AI-powered element identification and locator generation

Project description

Browser Service ๐Ÿค–

AI-powered browser automation made simple. Automatically identify web elements and generate reliable locators for your automation scripts.

PyPI version Python 3.8+

โœจ What is Browser Service?

Browser Service is an intelligent browser automation library that uses AI to automatically identify and generate reliable selectors for web elements. No more fragile XPath or CSS selectors that break when websites change!

Perfect for:

  • ๐Ÿค– Automated testing
  • ๐Ÿ”„ Web scraping
  • ๐Ÿ“Š Data extraction
  • ๐ŸŽฏ UI automation
  • ๐Ÿš€ Robotic Process Automation (RPA)

๐Ÿš€ Quick Start

1. Install

pip install browser-service

2. Basic Usage

import asyncio
from browser_service.config import config
from browser_service.tasks import process_workflow_task

async def automate_website():
    # Configure your API key (get from Google AI Studio)
    config.GEMINI_API_KEY = "your-gemini-api-key-here"

    # Define what you want to automate
    workflow = {
        "url": "https://example.com",
        "steps": [
            {"action": "click", "element": "Login button"},
            {"action": "type", "element": "Email field", "text": "user@example.com"},
            {"action": "click", "element": "Submit button"}
        ]
    }

    # Run the automation
    result = await process_workflow_task(workflow)
    print(f"โœ… Automation completed: {result}")

# Run it
asyncio.run(automate_website())

That's it! The AI automatically finds the right elements on the page.

๐ŸŽฏ Key Features

๐Ÿง  AI-Powered Element Detection

  • Natural Language: Describe elements in plain English ("Login button", "Search box")
  • Smart Locators: Automatically generates reliable XPath, CSS, and Playwright selectors
  • Self-Healing: Adapts when websites change their structure

๐Ÿ”ง Easy Configuration

from browser_service.config import config

# Configure once, use everywhere
config.GEMINI_API_KEY = "your-api-key"
config.HEADLESS = True  # Run without browser window
config.TIMEOUT = 30     # Seconds to wait for elements

๐ŸŒ Multiple Browser Support

  • Chrome/Chromium
  • Firefox
  • Safari (macOS)
  • Edge

๐Ÿ“Š Built-in Monitoring

from browser_service.utils import record_workflow_metrics

# Track your automation performance
metrics = record_workflow_metrics(workflow_result)
print(f"โฑ๏ธ  Execution time: {metrics['duration']}s")
print(f"๐ŸŽฏ Success rate: {metrics['success_rate']}%")

๐Ÿ“š Usage Examples

Form Filling Automation

workflow = {
    "url": "https://myapp.com/contact",
    "steps": [
        {"action": "type", "element": "Name field", "text": "John Doe"},
        {"action": "type", "element": "Email field", "text": "john@example.com"},
        {"action": "select", "element": "Country dropdown", "value": "United States"},
        {"action": "click", "element": "Submit button"}
    ]
}

Data Extraction

workflow = {
    "url": "https://news-site.com",
    "steps": [
        {"action": "extract", "element": "Article titles", "multiple": True},
        {"action": "extract", "element": "Publication dates", "multiple": True}
    ]
}

E-commerce Automation

workflow = {
    "url": "https://store.com",
    "steps": [
        {"action": "type", "element": "Search box", "text": "wireless headphones"},
        {"action": "click", "element": "Search button"},
        {"action": "click", "element": "First product"},
        {"action": "click", "element": "Add to cart button"}
    ]
}

๐Ÿ”ง Configuration

Required Setup

from browser_service.config import config

# Required: Your Google Gemini API key
config.GEMINI_API_KEY = "your-gemini-api-key-here"

# Optional: Customize behavior
config.HEADLESS = True          # Run without browser UI
config.TIMEOUT = 30             # Element wait timeout (seconds)
config.BROWSER_TYPE = "chrome"  # chrome, firefox, safari, edge

Advanced Configuration

from browser_service.config import BrowserServiceConfig

# Create custom config
custom_config = BrowserServiceConfig(
    gemini_api_key="your-key",
    headless=False,
    timeout=60,
    browser_type="firefox"
)

๐ŸŽฎ Action Types

Action Description Example
click Click an element {"action": "click", "element": "Submit button"}
type Type text into field {"action": "type", "element": "Email field", "text": "user@email.com"}
select Select dropdown option {"action": "select", "element": "Country", "value": "USA"}
extract Get element text {"action": "extract", "element": "Price"}
wait Wait for element {"action": "wait", "element": "Loading spinner"}
scroll Scroll to element {"action": "scroll", "element": "Bottom of page"}

๐Ÿ—๏ธ API Reference

Core Functions

from browser_service.tasks import process_workflow_task
from browser_service.locators import generate_locators_from_attributes
from browser_service.browser import BrowserSessionManager

# Process a complete workflow
result = await process_workflow_task(workflow)

# Generate locators for an element
locators = generate_locators_from_attributes(element_attributes)

# Manage browser sessions
browser = BrowserSessionManager()
await browser.start_session()
# ... use browser ...
await browser.cleanup()

Configuration Classes

from browser_service.config import (
    config,                    # Global config instance
    BrowserServiceConfig,      # Main config class
    BatchConfig,              # Batch processing config
    LocatorConfig,            # Locator generation config
    LLMConfig                 # AI model config
)

๐Ÿ› Troubleshooting

Common Issues

โŒ "Element not found" errors

# Solution: Make element descriptions more specific
{"action": "click", "element": "Blue Login button on the right"}  # Better
{"action": "click", "element": "Login button"}                   # Worse

โŒ "API key invalid" error

# Make sure you set your Gemini API key
config.GEMINI_API_KEY = "your-actual-api-key-from-google-ai-studio"

โŒ "Timeout" errors

# Increase timeout for slow pages
config.TIMEOUT = 60  # 60 seconds instead of default 30

Debug Mode

import logging
from browser_service.utils import setup_logging

# Enable detailed logging
setup_logging(level=logging.DEBUG)

# Now you'll see detailed logs about element detection

๐Ÿ“‹ Requirements

  • Python: 3.8 or higher
  • API Key: Google Gemini API key (free tier available)
  • Browser: Chrome/Chromium recommended (others supported)

๐Ÿค Contributing

Found a bug or want to improve Browser Service?

  1. ๐Ÿ› Report Issues: GitHub Issues
  2. ๐Ÿ’ก Feature Requests: Open an issue with "Feature Request" label
  3. ๐Ÿ”ง Code Contributions: Fork โ†’ Branch โ†’ PR

๐Ÿ“„ License

MIT License - see LICENSE file for details.

๐Ÿ™‹โ€โ™‚๏ธ Support


Ready to automate? ๐Ÿš€ Install now and start building intelligent browser automation!

pip install browser-service

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

browser_service-1.0.19.tar.gz (141.1 kB view details)

Uploaded Source

Built Distribution

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

browser_service-1.0.19-py3-none-any.whl (148.9 kB view details)

Uploaded Python 3

File details

Details for the file browser_service-1.0.19.tar.gz.

File metadata

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

File hashes

Hashes for browser_service-1.0.19.tar.gz
Algorithm Hash digest
SHA256 9cfdfd2c0aa5af872feddc47f99d8453fe26573d1cffea9d52924011d499de27
MD5 f2fff79c56e7d2ee7d4e55a452381181
BLAKE2b-256 55e84525a064909aaddab9d7cb9b0d4c3ebf7aab855d064e5f7dd7d7e12fad86

See more details on using hashes here.

File details

Details for the file browser_service-1.0.19-py3-none-any.whl.

File metadata

File hashes

Hashes for browser_service-1.0.19-py3-none-any.whl
Algorithm Hash digest
SHA256 a059c798c1eab9d782e953d337a6c671fb5b6db77307dc037eef7a68b0f43d1c
MD5 2535a1afff0e082930464a3503a0ffb5
BLAKE2b-256 9fbc1058bdb2e1a1ae6ea5f73ed2cfaa64d0e700c923f3561e565371a809a126

See more details on using hashes here.

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