是否有Mozilla木偶协议命令的文档?

时间:2020-01-12 03:56:09

标签: web-api-testing firefox-marionette

木偶是用于远程控制Mozilla浏览器的协议。出于相同的目的,Chromium具有 DevTools 协议,它是documented here

木偶有一些sketchy documentation here,但是是否有适当的可用命令和参数列表?可以以某种方式从Mozilla来源中提取吗? (就像Chromium具有PDL。)

按命令,我指的是[0,1,"WebDriver:Navigate",{"url":"http://awe.lv"}]}]之类的 ,“ WebDriver:GetTitle”,[0,2,"WebDriver:ExecuteAsyncScript",{"script":"alert('Hello!')"}] ,“ WebDriver:GetWindowHandle”,“ WebDriver:GetWindowRect”,“ WebDriver:TakeScreenshot”和“ WebDriver:GetPageSource”。特别是,我想像使用DevTools的方法Network.enable一样观察网络流量。

是否有其他前缀(“ WebDriver:”除外)可用?我们可以通过木偶使用Web APIs吗?

2 个答案:

答案 0 :(得分:1)

好的,我在Geckodriver指向source处找到了命令列表。 但是,这些命令很少,而且文档也不完整!我希望人们可以通过木偶使用所有Web APIs

答案 1 :(得分:0)

玩了一下geckodriverWireshark

使用 --marionette 启动 Firefox;我个人喜欢添加 --headless --no-remote --profile $(mktemp -d),但这取决于您!打开 FireFox 监听端口 2828(有一种方法可以改变这一点,但我不是 100% 确定如何)。

木偶协议如下:

  • 每条消息都是一个没有换行符的带长度前缀的 json 消息(例如,当您连接 telnet localhost 2828 时,您会看到 50:{"applicationType":"gecko","marionetteProtocol":3}50 表示 json 是 50字节长。
  • 每条消息(除了第一条)都是一个包含 4 项的 json 数组:
    • [0, messageId, command, body] 表示请求,其中 messageId 是一个整数,command 是一个字符串,而 body 是一个对象。示例(带长度前缀)31:[0,1,"WebDriver:NewSession",{}]
    • [1, messageId, error, reply] 回复。这里 messageId 是回复的 id,errorresult 为空(取决于是否有错误)。例如。 697:[1,1,null,{"sessionId":"d9dbe...", ..., "proxy":{}}}]
  • 可以在 Marionette source code 中找到所有命令的完整列表,在我看来,那里的所有功能都有很好的文档记录。一方面,它们似乎在 WebDriver:* 下公开了所有 webdriver 函数。