fix: 采集后关闭自动新建商品页
- 新增 close_tab 和 create_tab_info,区分断开 CDP 连接与关闭浏览器 target - open_product 标记商品页是否本轮自动新建,collect 结束后只关闭自动新建 tab - 保留用户原本打开的商品 tab,③ 更新流程暂不自动关闭页面 - 补充 editor tab 生命周期测试并同步架构、API、任务和进度文档
This commit is contained in:
+22
-3
@@ -30,6 +30,19 @@ def http_get(path, host=None):
|
||||
return s.get(f"{_base(host)}{path}", timeout=10).json()
|
||||
|
||||
|
||||
def close_tab(target_id, host=None):
|
||||
"""Close a Chrome target/page by target id."""
|
||||
|
||||
if not target_id:
|
||||
return False
|
||||
import requests
|
||||
|
||||
s = requests.Session()
|
||||
s.trust_env = False
|
||||
response = s.get(f"{_base(host)}/json/close/{target_id}", timeout=10)
|
||||
return response.ok
|
||||
|
||||
|
||||
class CDP:
|
||||
"""单个 target 的 CDP 客户端:命令同步、事件回调异步。"""
|
||||
|
||||
@@ -133,8 +146,8 @@ def find_product_tab(item_id, host=None):
|
||||
return None
|
||||
|
||||
|
||||
def create_tab(url, host=None):
|
||||
"""用 browser 级 Target.createTarget 新建 tab,返回其 page websocket。"""
|
||||
def create_tab_info(url, host=None):
|
||||
"""用 browser 级 Target.createTarget 新建 tab,返回其 page target 信息。"""
|
||||
ver = http_get("/json/version", host=host)
|
||||
b = CDP(ver["webSocketDebuggerUrl"])
|
||||
try:
|
||||
@@ -145,6 +158,12 @@ def create_tab(url, host=None):
|
||||
while time.time() < end:
|
||||
for t in http_get("/json", host=host):
|
||||
if t.get("id") == tid and t.get("webSocketDebuggerUrl"):
|
||||
return t["webSocketDebuggerUrl"]
|
||||
return t
|
||||
time.sleep(0.5)
|
||||
raise TimeoutError("等待新 tab websocket 超时")
|
||||
|
||||
|
||||
def create_tab(url, host=None):
|
||||
"""用 browser 级 Target.createTarget 新建 tab,返回其 page websocket。"""
|
||||
|
||||
return create_tab_info(url, host=host)["webSocketDebuggerUrl"]
|
||||
|
||||
Reference in New Issue
Block a user