You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何在.NET中使用MasterDevs ChromeDevTools并执行自定义JS脚本?

关于MasterDevs ChromeDevTools编译执行自定义JavaScript脚本的解决方案尝试

我太懂这种踩坑的感觉了——MasterDevs ChromeDevTools作为对接Chrome开发者工具的.NET类库,体量不小就算了,关键是XML文档还不完善,想找个执行自定义JS的方法真的像摸黑找门。不过别慌,我之前也碰过类似的问题,给你分享几个可行的思路:

首先得明确,这个类库本质是对**Chrome DevTools Protocol(CDP)**的封装,执行JS脚本核心就是调用CDP里的Runtime.evaluate接口,对应到类库中也有对应的实现。你可以按下面的步骤试试:

  • 先确保你已经成功建立了和Chrome实例的连接,比如通过ChromeSession类初始化了有效会话(记得启动Chrome时要加--remote-debugging-port=9222这类调试参数)。
  • 从会话中获取RuntimeClient实例,这个是处理Runtime领域命令的客户端,一般在MasterDevs.ChromeDevTools.Protocol.Chrome.Runtime命名空间下。
  • 调用EvaluateAsync方法执行你的自定义JS,示例代码大概是这样:
// 假设session是已经连接成功的ChromeSession实例
var runtimeClient = session.GetClient<RuntimeClient>();
var evaluateParams = new EvaluateCommandParams
{
    Expression = "// 这里写你的自定义JS代码\nconsole.log('测试执行'); return '脚本执行完成';",
    ReturnByValue = true, // 设置为true可以获取脚本的返回值
    AwaitPromise = false // 如果你的JS是异步的,记得设为true
};

var result = await runtimeClient.EvaluateAsync(evaluateParams);

// 处理执行结果
if (result.Result != null)
{
    Console.WriteLine($"脚本返回值: {result.Result.Value}");
}

如果还是找不到对应的类或方法,给你两个排查方向:

  1. 直接在类库中搜索包含Evaluate关键词的成员——毕竟执行JS的核心方法绕不开这个词,大概率能定位到入口。
  2. 对照CDP的接口逻辑理解实现,因为这个类库基本是对CDP接口的一对一映射,知道了CDP的接口名,就能对应找到类库中的对应类和方法。

另外,要是你连初始化会话都有问题,记得检查Chrome进程是否正确启动调试端口,以及会话连接时的参数是否正确。

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

火山引擎 最新活动