Package cri provides type-safe bindings for devtools protocol. It can be used with Chrome or any other target that implements the interface.
Protocol is generated by cmd/generate.sh
. Script fetches latest version of protocol and generates types and domain (accessibility, domdebugger, performance etc.) packages. Master branch reflects tip of tree.
Tested with go1.4 and above.
go get -u github.com/SKatiyar/cri
Taking a screenshot.
package main
import (
"encoding/base64"
"fmt"
"io/ioutil"
"github.com/SKatiyar/cri"
"github.com/SKatiyar/cri/browser"
"github.com/SKatiyar/cri/page"
)
func main() {
conn, connErr := cri.NewConnection()
if connErr != nil {
fmt.Println(connErr)
return
}
res, resErr := browser.New(conn).GetVersion()
if resErr != nil {
fmt.Println(resErr)
return
}
pi := page.New(conn)
if enableErr := pi.Enable(); enableErr != nil {
fmt.Println(enableErr)
return
}
nav, navErr := pi.Navigate(&page.NavigateRequest{
Url: "https://www.example.com",
})
if navErr != nil {
fmt.Println(navErr)
return
}
pic, picErr := pi.CaptureScreenshot(nil)
if picErr != nil {
fmt.Println(picErr)
return
}
img, imgErr := base64.StdEncoding.DecodeString(pic.Data)
if imgErr != nil {
fmt.Println(imgErr)
return
}
if writeErr := ioutil.WriteFile("img.png", img, 0700); writeErr != nil {
fmt.Println(writeErr)
return
}
fmt.Println(res.JsVersion, nav.FrameId)
}
- Add go get support to version 1.2 of protocol.
- Add tests for
connection.go
- Add tests for domain packages.
- Simplify
On
function. - Add timeout to
On
function.