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

时间:2018-02-08 02:11:37

标签: winapi automation webbrowser-control microsoft-edge

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

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

我无法在网上找到任何表明这是可能的,但我担心我甚至可能找不到合适的地方。

谢谢!

1 个答案:

答案 0 :(得分:1)

Shawn,看一下Selenium WebDriver for Microsoft Edge。它通常用作QA工具,但我认为没有理由不这样做。

来自WebDriver的W3C定义

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

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

以下是从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();
        }
    }
}