diff --git a/agentrun/integration/builtin/sandbox.py b/agentrun/integration/builtin/sandbox.py index fc0b328..24bce64 100644 --- a/agentrun/integration/builtin/sandbox.py +++ b/agentrun/integration/builtin/sandbox.py @@ -751,20 +751,26 @@ def _get_playwright(self, sb: BrowserSandbox) -> "BrowserPlaywrightSync": Automatically recreates the connection when the thread that created it has exited, because Playwright's internal greenlet is bound to the thread that created it. """ - if self._playwright_sync is not None and self._playwright_thread is not None: + if ( + self._playwright_sync is not None + and self._playwright_thread is not None + ): current_thread = threading.current_thread() creator_thread = self._playwright_thread - if not creator_thread.is_alive() or current_thread is not creator_thread: + if ( + not creator_thread.is_alive() + or current_thread is not creator_thread + ): if not creator_thread.is_alive(): logger.debug( - "Playwright creating thread (id=%s) has exited, recreating" - " connection", + "Playwright creating thread (id=%s) has exited," + " recreating connection", creator_thread.ident, ) else: logger.debug( - "Playwright creating thread (id=%s) differs from current" - " thread (id=%s), recreating connection", + "Playwright creating thread (id=%s) differs from" + " current thread (id=%s), recreating connection", creator_thread.ident, current_thread.ident, ) @@ -970,7 +976,7 @@ def goto(self, url: str) -> Dict[str, Any]: ) def browser_navigate_back( self, - wait_until: str = "load", + wait_until: str = "domcontentloaded", timeout: Optional[float] = None, ) -> Dict[str, Any]: """返回上一页 / Go back to previous page""" @@ -996,7 +1002,7 @@ def inner(sb: Sandbox): ) def browser_go_forward( self, - wait_until: str = "load", + wait_until: str = "domcontentloaded", timeout: Optional[float] = None, ) -> Dict[str, Any]: """前进到下一页 / Go forward to next page""" diff --git a/tests/unittests/integration/test_browser_toolset_error_handling.py b/tests/unittests/integration/test_browser_toolset_error_handling.py index a0e3924..16079c9 100644 --- a/tests/unittests/integration/test_browser_toolset_error_handling.py +++ b/tests/unittests/integration/test_browser_toolset_error_handling.py @@ -520,3 +520,27 @@ def callback(sb): assert "error" in result toolset._reset_playwright.assert_not_called() assert toolset.sandbox is original_sandbox + + +class TestBrowserNavigationDefaults: + """测试导航方法的默认参数 / Tests for default parameters of navigation methods""" + + def test_browser_navigate_back_default_wait_until(self): + """browser_navigate_back 的默认 wait_until 为 domcontentloaded""" + fields = BrowserToolSet.browser_navigate_back.args_schema.model_fields + assert fields["wait_until"].default == "domcontentloaded" + + def test_browser_go_forward_default_wait_until(self): + """browser_go_forward 的默认 wait_until 为 domcontentloaded""" + fields = BrowserToolSet.browser_go_forward.args_schema.model_fields + assert fields["wait_until"].default == "domcontentloaded" + + def test_browser_navigate_back_default_timeout_is_none(self): + """browser_navigate_back 的默认 timeout 为 None""" + fields = BrowserToolSet.browser_navigate_back.args_schema.model_fields + assert fields["timeout"].default is None + + def test_browser_go_forward_default_timeout_is_none(self): + """browser_go_forward 的默认 timeout 为 None""" + fields = BrowserToolSet.browser_go_forward.args_schema.model_fields + assert fields["timeout"].default is None diff --git a/tests/unittests/integration/test_langchain_agui_integration.py b/tests/unittests/integration/test_langchain_agui_integration.py index 2e88c16..0f77b50 100644 --- a/tests/unittests/integration/test_langchain_agui_integration.py +++ b/tests/unittests/integration/test_langchain_agui_integration.py @@ -639,7 +639,7 @@ async def invoke_agent(request: AgentRequest): tools=tools, ) - input_data = { + input_data: Any = { "messages": [{ "role": "user", "content": (