You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python Web应用中,如何向js.window.open打开的必应聊天聚焦控件发文本

解决方法说明

首先明确:浏览器的同源策略会阻止你的Web应用直接操作bing.com域名下的窗口DOM——因为两者域名不同,前端JS直接调用子窗口的输入框元素并赋值会触发跨域错误,无法实现。

下面提供两种可行的实现思路:

1. 后端用浏览器自动化工具控制(推荐)

如果需求是通过代码自动完成提问提交,无需用户手动操作前端窗口,可在Python后端借助浏览器自动化工具直接控制必应聊天页面:

Playwright示例代码

from playwright.sync_api import sync_playwright

def submit_bing_question(question):
    with sync_playwright() as p:
        browser = p.chromium.launch(headless=False)  # headless=False会显示浏览器窗口
        page = browser.new_page()
        page.goto("https://www.bing.com/chat")
        # 等待输入框加载完成(需根据页面实际DOM结构调整选择器)
        input_box = page.wait_for_selector("textarea[aria-label='输入你的问题']")
        input_box.fill(question)
        # 模拟回车提交
        input_box.press("Enter")
        # 可在此处添加结果处理逻辑
        browser.close()

# 调用示例
submit_bing_question("Python如何实现Web应用的跨域请求?")

Selenium示例代码

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

def submit_bing_question(question):
    driver = webdriver.Chrome()
    driver.get("https://www.bing.com/chat")
    # 显式等待输入框加载(比sleep更可靠)
    input_box = WebDriverWait(driver, 10).until(
        EC.presence_of_element_located((By.CSS_SELECTOR, "textarea[aria-label='输入你的问题']"))
    )
    input_box.send_keys(question)
    input_box.send_keys(Keys.ENTER)
    # 可在此处添加结果处理逻辑
    # driver.close()

# 调用示例
submit_bing_question("如何优化Python代码的执行效率?")

注意:必应聊天的DOM结构可能会更新,需根据实际页面元素调整选择器。

2. 前端方案(需用户配合)

如果必须通过前端点击按钮打开窗口并自动输入,只能借助浏览器扩展:

  • 开发一款浏览器扩展,利用扩展的跨域权限监听必应聊天窗口加载完成,定位输入框并填充文本提交。
  • 但该方式需要用户手动安装扩展,适用性有限。

内容的提问来源于stack exchange,提问作者WiredLessInTX

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 09:35:04