是否可以从单独的进程读取/写入 MS Edge 中加载的网页

Is it possible to read / write a web page loaded in MS Edge from a separate process

我意识到这个问题不完全符合 SO 的标准,但我希望有人能告诉我我在浪费时间或指出正确的方向。

我想知道是否存在用于操纵 Edge 中加载的网页的低级别 API。我正在从事一个自动化项目,该项目需要能够实时解析 DOM、注入元素、从单独的进程中获取/设置输入值。

我无法在网上找到任何表明这是可能的东西,但我担心我什至可能没有在正确的地方寻找。

谢谢!

Shawn,看看 Microsoft Edge 的 Selenium WebDriver。它通常用作 QA 工具,但我看不出有什么理由不能用这种方式来做这些事情。

来自 W3C 对 WebDriver 的定义

WebDriver 是一个远程控制界面,可以对用户代理进行内省和控制。它提供了一种与平台和语言无关的有线协议,作为进程外程序远程指示 Web 浏览器行为的一种方式。 提供了一组接口来发现和操作 Web 文档中的 DOM 元素并控制用户代理的行为。它的主要目的是允许网络作者编写测试,使用户代理从一个单独的控制进程中自动化,但也可以以允许浏览器内脚本控制(可能是单独的)浏览器

我相信这代表了你想做的大部分事情。这里有一些有用的链接,可以帮助您入门。

这是从 MSFT Gist 中获取的一些示例 C# 代码

using OpenQA.Selenium;
using OpenQA.Selenium.Edge;
using System;

namespace EdgeDriverTests
{
    public class Program
    {
        /*
        * This assumes you have added MicrosoftWebDriver.exe to your System Path.
        * For help on adding an exe to your System Path, please see:
        * https://msdn.microsoft.com/en-us/library/office/ee537574(v=office.14).aspx
        */
        static void Main(string[] args)
        {
            /* You can find the latest version of Microsoft WebDriver here:
            * https://developer.microsoft.com/en-us/microsoft-edge/tools/webdriver/
            */
            var driver = new EdgeDriver();

            // Navigate to Bing
            driver.Url = "https://www.bing.com/";

            // Find the search box and query for webdriver
            var element = driver.FindElementById("sb_form_q");

            element.SendKeys("webdriver");
            element.SendKeys(Keys.Enter);

            Console.ReadLine();
            driver.Quit();
        }
    }
}