首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Chrome DevTools:远程DOM修改

Chrome DevTools:远程DOM修改
EN

Stack Overflow用户
提问于 2012-01-10 16:43:50
回答 1查看 1.5K关注 0票数 4

我正在创建一个应该远程控制浏览器窗口的小应用程序:导航、填充表单等等。我正在尝试使用Chrome调试和C#来存档目标。目前,原型与浏览器连接,获取可用页面列表并建立WebSocket连接。

--remote-debugging-port=9123

  • Connecto
  1. Start chrome.exe chrome.exe到ws://localhost:9123/devtools/page/1并发送:

请求:{ "id":1,“方法”:"DOM.setOuterHTML","params":{"nodeId":1,"outerHTML":“}

它看起来是错误的,但没有返回错误。

代码:

代码语言:javascript
复制
       var client = new WebClient();
       var pages = client.DownloadString("http://localhost:9123/json");
       Console.WriteLine(pages); // works well, displays JSON with info about pages

       // create WebSocket
       var socket = new WebSockets.WebSocket("ws://localhost:9123/devtools/page/1");
       // it should print messages to console:
       socket.OnMessage += (sender, eventdata) => Console.WriteLine(eventdata);

       // works well - sends and recieves handshaking messages
       socket.Connect();

       Console.WriteLine("\nType \"exit\" to exit.\n");

       string data;
       while (true)
       {
           Thread.Sleep(500);
           Console.Write("> ");
           data = Console.ReadLine();
           if (data == "exit")
               break;
           // sends data:
           socket.Send(data);
       }

数据如何发送到WebSocket流:

代码语言:javascript
复制
           byte[] dataBuffer = Encoding.UTF8.GetBytes(data);
           _wsStream.WriteByte(0x00);
           _wsStream.Write(dataBuffer, 0, dataBuffer.Length);
           _wsStream.WriteByte(0xff);

而阅读永远不会回来:

代码语言:javascript
复制
   private void Message() // started in different thread
   {
       while (_readyState == WsState.Open)
       {
           string data = Receive(); // does _wsStream.ReadByte(); and stops on it forever
           var handler = OnMessage;
           if (null != handler && data != null)
               handler(this, data);
       }
   }

请你帮我处理一下命令语法和疑难解答.

谢谢,

亚历克斯

EN

回答 1

Stack Overflow用户

发布于 2017-02-21 04:30:29

我建议您使用WebSocket4Net NuGet包。

代码语言:javascript
复制
using WebSocket4Net;

//Create new socket connection
WebSocket socket = new WebSocket(tab.webSocketDebuggerUrl);
socket.MessageReceived += MessageReceived;
socket.Open();
socket.Send("String to send");

private static void Ss_MessageReceived(object sender, WebSocket4Net.MessageReceivedEventArgs e)
{
    //Handle here response from server
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8806975

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档