fixbug: dead loop

This commit is contained in:
莘权 马 2023-08-31 21:03:21 +08:00
parent a5ab5948c9
commit 8c2dfca687
3 changed files with 61 additions and 36 deletions

View file

@ -22,3 +22,8 @@ class WebBrowserEngineType(Enum):
PLAYWRIGHT = "playwright"
SELENIUM = "selenium"
CUSTOM = "custom"
@classmethod
def _missing_(cls, key):
"""缺省类型转换"""
return cls.CUSTOM

View file

@ -6,29 +6,31 @@
from __future__ import annotations
import importlib
from typing import Any, Callable, Coroutine, Literal, overload, Dict
from typing import Any, Callable, Coroutine, Dict, Literal, overload
from metagpt.config import Config
from metagpt.config import CONFIG
from metagpt.tools import WebBrowserEngineType
from metagpt.utils.parse_html import WebPage
class WebBrowserEngine:
def __init__(
self,
options: Dict,
engine: WebBrowserEngineType | None = None,
run_func: Callable[..., Coroutine[Any, Any, WebPage | list[WebPage]]] | None = None,
self,
options: Dict,
engine: WebBrowserEngineType | None = None,
run_func: Callable[..., Coroutine[Any, Any, WebPage | list[WebPage]]] | None = None,
):
engine = engine or options.get("web_browser_engine")
if engine is None:
raise NotImplementedError
if engine == WebBrowserEngineType.PLAYWRIGHT:
if WebBrowserEngineType(engine) is WebBrowserEngineType.PLAYWRIGHT:
module = "metagpt.tools.web_browser_engine_playwright"
run_func = importlib.import_module(module).PlaywrightWrapper(options=options).run
elif engine == WebBrowserEngineType.SELENIUM:
elif WebBrowserEngineType(engine) is WebBrowserEngineType.SELENIUM:
module = "metagpt.tools.web_browser_engine_selenium"
run_func = importlib.import_module(module).SeleniumWrapper(options=options).run
elif engine == WebBrowserEngineType.CUSTOM:
elif WebBrowserEngineType(engine) is WebBrowserEngineType.CUSTOM:
run_func = run_func
else:
raise NotImplementedError
@ -51,10 +53,8 @@ if __name__ == "__main__":
import fire
async def main(url: str, *urls: str, engine_type: Literal["playwright", "selenium"] = "playwright", **kwargs):
conf = Config()
return await WebBrowserEngine(options=conf.runtime_options,
engine=WebBrowserEngineType(engine_type),
**kwargs).run(url, *urls)
return await WebBrowserEngine(options=CONFIG.options, engine=WebBrowserEngineType(engine_type), **kwargs).run(
url, *urls
)
fire.Fire(main)