|
|
""" |
|
|
Test complex dropdown interaction functionality. |
|
|
""" |
|
|
import pytest |
|
|
from browser_use.agent.service import Agent |
|
|
from browser_use.agent.views import AgentHistoryList |
|
|
|
|
|
@pytest.mark.asyncio |
|
|
async def test_dropdown_complex(llm, browser_context): |
|
|
"""Test selecting an option from a complex dropdown menu.""" |
|
|
agent = Agent( |
|
|
task=( |
|
|
'go to https://codepen.io/shyam-king/pen/pvzpByJ and first get all options for the dropdown and then select the json option' |
|
|
), |
|
|
llm=llm, |
|
|
browser_context=browser_context, |
|
|
) |
|
|
|
|
|
try: |
|
|
history: AgentHistoryList = await agent.run(20) |
|
|
result = history.final_result() |
|
|
|
|
|
|
|
|
assert result is not None |
|
|
assert 'json' in result.lower(), "Expected 'json' option to be selected" |
|
|
|
|
|
|
|
|
element = await browser_context.get_element_by_selector('.select-selected') |
|
|
assert element is not None, "Custom dropdown element should exist" |
|
|
|
|
|
text = await element.text_content() |
|
|
assert 'json' in text.lower(), "Dropdown should display json option" |
|
|
|
|
|
|
|
|
code_element = await browser_context.get_element_by_selector('pre code') |
|
|
assert code_element is not None, "Code element should be visible when JSON is selected" |
|
|
|
|
|
except Exception as e: |
|
|
pytest.fail(f"Complex dropdown test failed: {str(e)}") |
|
|
finally: |
|
|
await browser_context.close() |
|
|
|