package main
import (
"github.com/tebeka/selenium"
"github.com/tebeka/selenium/chrome"
"strconv"
"time"
)
func Enabled(by, elementName string) func(selenium.WebDriver) (bool, error) {
return func(wd selenium.WebDriver) (bool, error) {
el, err := wd.FindElement(by, elementName)
if err != nil {
return false, nil
}
enabled, err := el.IsEnabled()
if err != nil {
return false, nil
}
if !enabled {
return false, nil
}
return true, nil
}
}
func main() {
const (
chromePath = "./chromedriver.exe"
port = 8080
)
service, err := selenium.NewChromeDriverService(chromePath, port)
if err != nil {
panic(err)
}
defer service.Stop()
type M map[string]string
var rd []M
rdData := M{
"id": "Save as PDF",
"origin": "local",
"account": "",
}
rd = append(rd, rdData)
settings := map[string]interface{}{
"recentDestinations": rd,
"selectedDestinationId": "Save as PDF",
"version": 2,
}
pref := map[string]interface{}{
"printing.print_preview_sticky_settings.appState": settings,
"savefile.default_directory": `C:\Users\user\Desktop`,
}
chromeCaps := chrome.Capabilities{
Prefs: pref,
Path: "",
Args: []string{
"--kiosk-printing",
},
}
opts := []selenium.ServiceOption{}
caps := selenium.Capabilities{
"browserName" : "chrome",
}
caps.AddChrome(chromeCaps)
_, err = selenium.NewChromeDriverService(chromePath, port, opts...)
if err != nil {
panic(err)
}
wd, err := selenium.NewRemote(caps, "http://127.0.0.1:"+strconv.Itoa(port)+"/wd/hub")
if err != nil {
panic(err)
}
defer wd.Quit()
if err := wd.Get("<some url>"); err != nil {
panic(err)
}
err = wd.WaitWithTimeout(Enabled(selenium.ByCSSSelector, "<some css_selector>"), 10 * time.Second)
if err != nil {
panic(err)
}
wd.ExecuteScript("window.print();", nil)
}
это мой полный исходный код.
Я запустил программу, используя этот исходный код, и результат был до тех пор, пока не была нажата кнопка сохранения, но было подтверждено, что она была установлена на другой принтер устройство вместо «сохранить как PDF».
Интересно, установлено ли значение Capabilities неправильно или в пакете имеется ошибка. Мне также интересно, как сохранить его в формате PDF.