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

如何通过Selenium在Microsoft Edge中进入沉浸式阅读器模式

在Docker化的Edge中通过Selenium开启沉浸式阅读器并保存源码

核心解决方案:使用Edge DevTools Protocol (CDP)

直接用快捷键F9在Docker环境中容易失效,因为缺少窗口焦点。更可靠的方式是调用Edge内置的CDP命令来触发沉浸式阅读器:

  1. 连接到CDP并启用阅读器
    Edge的沉浸式阅读器有对应的CDP命令immersiveReader.enable,可以通过Selenium的sendDevToolsCommand方法调用。

  2. 等待阅读器加载完成
    开启后需要等待阅读器的DOM元素加载,比如等待阅读器的容器出现。

  3. 提取源码并保存到本地
    获取阅读器区域的HTML内容,用Node.js的文件系统模块写入本地文件。

完整Node.js代码示例

const { Builder, By, until } = require('selenium-webdriver');
const edge = require('selenium-webdriver/edge');
const fs = require('fs').promises;

async function run() {
    // 配置Docker Edge的连接选项
    const options = new edge.Options()
        .addArguments('--headless=new') // 无头模式适配Docker环境
        .addArguments('--no-sandbox')
        .addArguments('--disable-dev-shm-usage');

    const driver = await new Builder()
        .forBrowser('MicrosoftEdge')
        .setEdgeOptions(options)
        .usingServer('http://<你的DockerEdge地址>:4444/wd/hub') // 替换为实际Docker Edge服务地址
        .build();

    try {
        // 加载目标页面
        await driver.get('https://支持沉浸式阅读器的页面地址');

        // 调用CDP命令开启沉浸式阅读器
        await driver.sendDevToolsCommand('immersiveReader.enable', {});

        // 等待阅读器容器加载(根据实际页面调整选择器)
        const readerContainer = await driver.wait(
            until.elementLocated(By.css('#immersive-reader-container')), // 替换为页面实际的阅读器容器选择器
            10000
        );
        await driver.wait(until.elementIsVisible(readerContainer), 5000);

        // 获取阅读器区域的HTML源码
        const readerSource = await readerContainer.getAttribute('innerHTML');

        // 保存到本地文件
        await fs.writeFile('./immersive-reader-source.html', readerSource, 'utf8');
        console.log('沉浸式阅读器源码已保存');
    } finally {
        await driver.quit();
    }
}

run().catch(err => console.error(err));

关键说明

  • CDP命令的可靠性:immersiveReader.enable是Edge官方支持的CDP命令,无需依赖窗口焦点,完美适配Docker无头环境。
  • 选择器调整:不同页面的沉浸式阅读器容器选择器可能不同,需要用浏览器开发者工具查看实际DOM结构,替换代码中的选择器。
  • Docker配置:确保你的Edge Docker容器已开启远程调试,并且Selenium服务地址配置正确。

内容的提问来源于stack exchange,提问作者G-R

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 13:05:27