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 bycmd/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 /SKatiyar/cri
Taking a screenshot.
packagemain
import(
"encoding/base64"
"fmt"
"io/ioutil"
"github /SKatiyar/cri"
"github /SKatiyar/cri/browser"
"github /SKatiyar/cri/page"
)
funcmain() {
conn,connErr:=cri.NewConnection()
ifconnErr!=nil{
fmt.Println(connErr)
return
}
res,resErr:=browser.New(conn).GetVersion()
ifresErr!=nil{
fmt.Println(resErr)
return
}
pi:=page.New(conn)
ifenableErr:=pi.Enable();enableErr!=nil{
fmt.Println(enableErr)
return
}
nav,navErr:=pi.Navigate(&page.NavigateRequest{
Url:"https:// example",
})
ifnavErr!=nil{
fmt.Println(navErr)
return
}
pic,picErr:=pi.CaptureScreenshot(nil)
ifpicErr!=nil{
fmt.Println(picErr)
return
}
img,imgErr:=base64.StdEncoding.DecodeString(pic.Data)
ifimgErr!=nil{
fmt.Println(imgErr)
return
}
ifwriteErr:=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.