Documentation ¶
Index ¶
- Variables
- type Action
- type Chrome
- type Handler
- type Message
- type Meta
- type Tab
- func (t *Tab) Activate()
- func (t *Tab) Call(method string, params map[string]interface{}) (int32, chan *Message)
- func (t *Tab) CallAttr(method string, params map[string]interface{}, what, arg int, str string, ...) (int32, chan *Message)
- func (t *Tab) Close()
- func (t *Tab) Closed() bool
- func (t *Tab) Fire(event string, params map[string]interface{})
- func (t *Tab) Subscribe(events ...string)
- func (t *Tab) Unsubscribe(events ...string)
- type Task
Constants ¶
This section is empty.
Variables ¶
View Source
var ( ErrLaunchChrome = errors.New("failed to launch chrome") ErrCreateTab = errors.New("failed to create tab") )
View Source
var ( ArgDebugPort = "--remote-debugging-port" ArgHeadless = "--headless" ArgIgnoreCert = "--ignore-certificate-errors" )
View Source
var Browser = struct { Close string GetVersion string }{ "Browser.close", "Browser.getVersion", }
View Source
var DOM = struct { Enable string Disable string DescribeNode string Focus string GetAttributes string GetDocument string QuerySelector string QuerySelectorAll string RemoveAttribute string RemoveNode string RequestChildNodes string RequestNode string ResolveNode string SetAttributeValue string SetAttributesAsText string SetNodeName string SetNodeValue string ChildNodeCountUpdated string ChildNodeInserted string ChildNodeRemoved string DocumentUpdated string }{ "DOM.enable", "DOM.disable", "DOM.describeNode", "DOM.focus", "DOM.getAttributes", "DOM.getDocument", "DOM.querySelector", "DOM.querySelectorAll", "DOM.removeAttribute", "DOM.removeNode", "DOM.requestChildNodes", "DOM.requestNode", "DOM.resolveNode", "DOM.setAttributeValue", "DOM.setAttributesAsText", "DOM.setNodeName", "DOM.setNodeValue", "DOM.childNodeCountUpdated", "DOM.childNodeInserted", "DOM.childNodeRemoved", "DOM.documentUpdated", }
View Source
var Input = struct { DispatchKeyEvent string DispatchMouseEvent string DispatchTouchEvent string }{ "Input.dispatchKeyEvent", "Input.dispatchMouseEvent", "Input.dispatchTouchEvent", }
Chrome里有两类Input事件:可信的与非可信的, 可信事件是用户和页面交互触发的事件,如鼠标或键盘, 非可信事件是指由Web API触发的,如document.createEvent()或element.click()。 例如模拟点击事件,可以使用Runtime.Evaluate,传入表达式document.querySelector('xxx').click(), 但这属于非可信事件,如果点击会创建新Tab,浏览器会识别为弹出窗口进行拦截(Page.windowOpen事件仍会触发), 所以对于这种情况,只能使用Input.dispatchMouseEvent。 注:Input.dispatchMouseEvent模拟点击的话需要连续两次调用(type分别为mousePressed和mouseReleased), 并且必须带上button和clickCount参数
View Source
var Network = struct { Enable string Disable string ClearBrowserCache string ClearBrowserCookies string DeleteCookies string GetAllCookies string GetCookies string GetResponseBody string GetRequestPostData string DataReceived string EventSourceMessageReceived string LoadingFailed string LoadingFinished string RequestWillBeSent string ResponseReceived string WebSocketClosed string WebSocketCreated string WebSocketFrameReceived string WebSocketFrameSent string }{ "Network.enable", "Network.disable", "Network.clearBrowserCache", "Network.clearBrowserCookies", "Network.deleteCookies", "Network.getAllCookies", "Network.getCookies", "Network.getResponseBody", "Network.getRequestPostData", "Network.dataReceived", "Network.eventSourceMessageReceived", "Network.loadingFailed", "Network.loadingFinished", "Network.requestWillBeSent", "Network.responseReceived", "Network.webSocketClosed", "Network.webSocketCreated", "Network.webSocketFrameReceived", "Network.webSocketFrameSent", }
View Source
var Page = struct { Enable string Disable string BringToFront string CaptureScreenshot string Navigate string Reload string StopLoading string DomContentEventFired string FrameAttached string FrameDetached string FrameNavigated string LifecycleEvent string LoadEventFired string WindowOpen string }{ "Page.enable", "Page.disable", "Page.bringToFront", "Page.captureScreenshot", "Page.navigate", "Page.reload", "Page.stopLoading", "Page.domContentEventFired", "Page.frameAttached", "Page.frameDetached", "Page.frameNavigated", "Page.lifecycleEvent", "Page.loadEventFired", "Page.windowOpen", }
View Source
var Runtime = struct { Enable string Disable string AwaitPromise string CallFunctionOn string CompileScript string Evaluate string GetProperties string GlobalLexicalScopeNames string QueryObjects string ReleaseObject string ReleaseObjectGroup string RunScript string ConsoleAPICalled string ExceptionRevoked string ExceptionThrown string }{ "Runtime.enable", "Runtime.disable", "Runtime.awaitPromise", "Runtime.callFunctionOn", "Runtime.compileScript", "Runtime.evaluate", "Runtime.getProperties", "Runtime.globalLexicalScopeNames", "Runtime.queryObjects", "Runtime.releaseObject", "Runtime.releaseObjectGroup", "Runtime.runScript", "Runtime.consoleAPICalled", "Runtime.exceptionRevoked", "Runtime.exceptionThrown", }
View Source
var Target = struct { ActivateTarget string AttachToTarget string CloseTarget string CreateTarget string DetachFromTarget string GetTargets string SendMessageToTarget string SetDiscoverTargets string AttachedToTarget string DetachedFromTarget string ReceivedMessageFromTarget string TargetCreated string TargetDestroyed string TargetCrashed string TargetInfoChanged string }{ "Target.activateTarget", "Target.attachToTarget", "Target.closeTarget", "Target.createTarget", "Target.detachFromTarget", "Target.getTargets", "Target.sendMessageToTarget", "Target.setDiscoverTargets", "Target.attachedToTarget", "Target.detachedFromTarget", "Target.receivedMessageFromTarget", "Target.targetCreated", "Target.targetDestroyed", "Target.targetCrashed", "Target.targetInfoChanged", }
Functions ¶
This section is empty.
Types ¶
type Action ¶
func NewEvalAction ¶
type Chrome ¶
type Message ¶
type Message struct { // 请求的Id,响应中会带有相同的Id,每次请求Tab.lastMessageId自增后赋值给Message.Id, // 事件通知没有该字段 Id int32 `json:"id,omitempty"` // 请求、响应和事件通知都有该字段 Method string `json:"method,omitempty"` // 请求的参数(可选)、事件通知的数据(可选), // 响应没有该字段 Params map[string]interface{} `json:"params,omitempty"` // 响应数据(请求和事件通知没有该字段) Result map[string]interface{} `json:"result,omitempty"` // 一些自定义属性 What int `json:"-"` Arg int `json:"-"` Str string `json:"-"` Obj interface{} `json:"-"` // contains filtered or unexported fields }
请求/响应/事件通知
func (*Message) GetResultType ¶
返回Message的type和subtype(如果type是object), Message可能没有type和subtype(如Page.navigate方法和Page.loadEventFired事件), type和subtype通常是Runtime.evaluate的返回结果, type可能是string/boolean/object/undefined等, subtype可能是null/error
func (*Message) GetResultValue ¶
type Meta ¶
type Meta struct { Id string `json:"id"` Type string `json:"type"` Title string `json:"title"` Url string `json:"url"` FaviconUrl string `json:"faviconUrl"` Description string `json:"description"` DevtoolsFrontendUrl string `json:"devtoolsFrontendUrl"` WebSocketDebuggerUrl string `json:"webSocketDebuggerUrl"` }
[ { "description": "", "devtoolsFrontendUrl": "/devtools/inspector.html?ws=127.0.0.1:9222/devtools/page/5D5FE2210AF9A5DAFAA2D69159C6CD52", "id": "5D5FE2210AF9A5DAFAA2D69159C6CD52", "title": "新标签页", "type": "page", "url": "chrome://newtab/", "webSocketDebuggerUrl": "ws://127.0.0.1:9222/devtools/page/5D5FE2210AF9A5DAFAA2D69159C6CD52" }, {
"description": "", "devtoolsFrontendUrl": "/devtools/inspector.html?ws=127.0.0.1:9222/devtools/page/853C0E933FD62DAD9ABBDFC9C3C47084", "faviconUrl": "https://www.baidu.com/favicon.ico", "id": "853C0E933FD62DAD9ABBDFC9C3C47084", "title": "百度一下,你就知道", "type": "page", "url": "https://www.baidu.com/", "webSocketDebuggerUrl": "ws://127.0.0.1:9222/devtools/page/853C0E933FD62DAD9ABBDFC9C3C47084" }, {
"description": "", "devtoolsFrontendUrl": "/devtools/inspector.html?ws=127.0.0.1:9222/devtools/page/CF2C261EEFA71ACB7803D25CFE93386C", "faviconUrl": "https://www.jd.com/favicon.ico", "id": "CF2C261EEFA71ACB7803D25CFE93386C", "title": "京东(JD.COM)-正品低价、品质保障、配送及时、轻松购物!", "type": "page", "url": "https://www.jd.com/", "webSocketDebuggerUrl": "ws://127.0.0.1:9222/devtools/page/CF2C261EEFA71ACB7803D25CFE93386C" } ]
type Tab ¶
type Tab struct {
// contains filtered or unexported fields
}
func (*Tab) Unsubscribe ¶
type Task ¶
type Task struct {
// contains filtered or unexported fields
}
func (*Task) OnCdpEvent ¶
func (*Task) OnCdpResponse ¶
Click to show internal directories.
Click to hide internal directories.