【Python】BrowseruseでSalesforce自動テスト

はじめに English is below

Browseruse(ブラウザー・ユース)は、AIエージェントがウェブサイトとシームレスにやり取りするためのオープンソースのウェブ自動化ライブラリです。このツールは、視覚情報とHTML構造の解析を組み合わせ、複雑なウェブ操作を自動化します。これにより、開発者はAIエージェントの精度を向上させ、効率的なウェブアプリケーションを構築できます。

主な特徴として、以下が挙げられます:
・視覚認識とHTML抽出の統合:ウェブページの視覚的理解とHTML構造の抽出を組み合わせ、包括的なウェブ操作を可能にします。
・マルチタブ管理:複数のタブを効果的に管理し、同時に複数のウェブページを操作できます。
・インタラクティブ要素の自動検出:ボタンやリンクなどのインタラクティブな要素を自動的に検出し、操作を容易にします。

これらの機能により、Browseruseはウェブブラウジング、データ収集、フォーム入力などの複雑なタスクを自動化し、大規模なウェブ操作を必要とする開発者にとって強力なツールとなっています。

ここではBrowseruseでSalesforceのE2Eテストを試みます。
暴論ではありますが、これから打鍵しかできないtesterが仕事失うでしょ・・・

repository:

https://github.com/browser-use/browser-use

前提条件

python > 3.11

pip install langchain_openai load_dotenv browser_use
playwright install

.envファイルを作成し下記内容を記述して保存

OPENAI_API_KEY={OpenAIのAPIキーをここに入力}
SALESFORCE_USERNAME={salesforceログイン時のid}
SALESFORCE_PASSWORD={salesforceログイン時のpw}

サンプルコード

from langchain_openai import ChatOpenAI
from browser_use import Agent
from browser_use.browser.browser import Browser, BrowserConfig
from browser_use.controller.service import Controller
from dotenv import load_dotenv
import os 
import asyncio
load_dotenv()
api_key = os.getenv("OPENAI_API_KEY")
salesforce_username = os.getenv("SALESFORCE_USERNAME")
salesforce_password = os.getenv("SALESFORCE_PASSWORD")
controller = Controller()
agent = None
@controller.registry.action('スクリーンショットを保存する')
async def save_screenshot(filename: str = "screenshot.png") -> str:
    page = await agent.browser_context.get_current_page()
    await page.screenshot(path=filename)
    return f"スクリーンショットを {filename} として保存しました"
    
async def main():
    global agent
    llm = ChatOpenAI(model="gpt-4o-mini")
    agent = Agent(
        task=f"""
        1. Salesforceのログインページにアクセスして、ユーザー名に「{salesforce_username}」、パスワードに「{salesforce_password}」を入力し、ログインしてください。
        2. ログイン後、Salesというアプリケーションに遷移する。次に、Contactの画面に遷移する。
        3. そしてGonzalez Roseという名前のContactを開き、Detailsタブをクリックしてください。
        ステップが実行するたびにスクリーンショットを step-{{n}}.png として保存してください
        """,
        llm=llm,
        controller=controller,
        browser=Browser(config=BrowserConfig(
            disable_security=True, 
            headless=False,
        )),
    )
    result = await agent.run()
    print(result)
if __name__ == "__main__":
    asyncio.run(main())

基本的にプロンプトの通りに動いてくれており、多少ミスがありますが、UIテストがかなり簡単になった所感です。

実機動画

YouTubeバージョン:

最後

AIの進化は日々著しく、最新の技術やトレンドを把握しないことは、時代に取り残されるリスクを高める可能性があります。人間としての必要性を高める努力を怠ることは、AIによって代替されるリスクと言えます。

Introduction

Browseruse is an open-source web automation library designed to enable AI agents to interact seamlessly with websites. By combining visual information analysis and HTML structure parsing, this tool automates complex web operations. It empowers developers to enhance AI agent accuracy and build efficient web applications.

Key features include:
• Integration of Visual Recognition and HTML Extraction: Merges visual understanding of web pages with HTML structure extraction, enabling comprehensive web operations.
• Multi-Tab Management: Efficiently handles multiple tabs, allowing simultaneous interactions with several web pages.
• Automatic Detection of Interactive Elements: Identifies interactive elements such as buttons and links automatically, simplifying operations.

These features make Browseruse a powerful tool for developers handling tasks like web browsing, data collection, and form filling, particularly when large-scale web automation is required.

In this context, we’ll attempt Salesforce E2E testing with Browseruse. Though it may be an extreme statement, it’s worth pondering if manual testers who rely solely on repetitive keystrokes might eventually see their roles replaced.

Repository:

https://github.com/browser-use/browser-use

Prerequisites

python > 3.11

pip install langchain_openai load_dotenv browser_use
playwright install

Create a .env file and include the following content:

OPENAI_API_KEY={OpenAI API Key}
SALESFORCE_USERNAME={salesforce ID}
SALESFORCE_PASSWORD={salesforce PW}

sample code

from langchain_openai import ChatOpenAI
from browser_use import Agent
from browser_use.browser.browser import Browser, BrowserConfig
from browser_use.controller.service import Controller
from dotenv import load_dotenv
import os 
import asyncio
load_dotenv()
api_key = os.getenv("OPENAI_API_KEY")
salesforce_username = os.getenv("SALESFORCE_USERNAME")
salesforce_password = os.getenv("SALESFORCE_PASSWORD")
controller = Controller()
agent = None
@controller.registry.action('save screenshot')
async def save_screenshot(filename: str = "screenshot.png") -> str:
    page = await agent.browser_context.get_current_page()
    await page.screenshot(path=filename)
    return f"screenshot {filename} was saved"
    
async def main():
    global agent
    llm = ChatOpenAI(model="gpt-4o-mini")
    agent = Agent(
        task=f"""
        1.	Access the Salesforce login page, enter {salesforce_username} as the username and {salesforce_password} as the password, and log in.
	    2.	After logging in, navigate to the Sales application. Then proceed to the Contacts page.
	    3.	Open the contact named Gonzalez Rose and click on the Details tab.
        Take a screenshot after each step and save it as step-{{n}}.png, where {{n}} corresponds to the step number.        """,
        llm=llm,
        controller=controller,
        browser=Browser(config=BrowserConfig(
            disable_security=True, 
            headless=False,
        )),
    )
    result = await agent.run()
    print(result)
if __name__ == "__main__":
    asyncio.run(main())

Overall, it follows the prompts as intended, though there are occasional minor errors. That said, the UI testing process feels significantly simplified.

video

YouTube :

コメントを残す