木偶是用于远程控制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吗?
答案 0 :(得分:1)
好的,我在Geckodriver指向source处找到了命令列表。 但是,这些命令很少,而且文档也不完整!我希望人们可以通过木偶使用所有Web APIs。
答案 1 :(得分:0)
玩了一下geckodriver
和Wireshark
:
使用 --marionette
启动 Firefox;我个人喜欢添加 --headless --no-remote --profile $(mktemp -d)
,但这取决于您!打开 FireFox 监听端口 2828(有一种方法可以改变这一点,但我不是 100% 确定如何)。
木偶协议如下:
telnet localhost 2828
时,您会看到 50:{"applicationType":"gecko","marionetteProtocol":3}
,50
表示 json 是 50字节长。[0, messageId, command, body]
表示请求,其中 messageId
是一个整数,command
是一个字符串,而 body
是一个对象。示例(带长度前缀)31:[0,1,"WebDriver:NewSession",{}]
[1, messageId, error, reply]
回复。这里 messageId
是回复的 id,error
或 result
为空(取决于是否有错误)。例如。 697:[1,1,null,{"sessionId":"d9dbe...", ..., "proxy":{}}}]
WebDriver:*
下公开了所有 webdriver 函数。