gpt4 book ai didi

google-chrome - Golang Selenium 包 - 连接到 selenium 服务器和 headless chrome

转载 作者:IT王子 更新时间:2023-10-29 02:11:55 27 4
gpt4 key购买 nike

我正在使用 Go Selenium 包 https://godoc.org/github.com/tebeka/selenium

我在 localhost:4444

上的 docker 容器内运行 headless chrome + selenium-server

服务器似乎没问题,因为我可以通过 http://localhost:4444/wd/hub/static/resource/hub.html 访问 Web 控制台

但我正在尝试让“Hello world”示例与现有的 docker 容器一起使用。

这是 selenium 驱动程序的 GoDocs 页面中的示例:

// Run some code on play.golang.org and display the result
package main

import (
"fmt"
"time"

"github.com/tebeka/selenium"
)

var code = `
package main
import "fmt"

func main() {
fmt.Println("Hello WebDriver!\n")
}
`

// Errors are ignored for brevity.

func main() {
// Connect to the selenium server
caps := selenium.Capabilities{"browserName": "firefox"}
wd, err := selenium.NewRemote(caps, "http://127.0.0.1:4444")
if err != nil {
fmt.Println(err)
}
defer wd.Quit()

// Get simple playground interface
wd.Get("http://play.golang.org/?simple=1")

// Enter code in textarea
elem, _ := wd.FindElement(selenium.ByCSSSelector, "#code")
elem.Clear()
elem.SendKeys(code)

// Click the run button
btn, _ := wd.FindElement(selenium.ByCSSSelector, "#run")
btn.Click()

// Get the result
div, _ := wd.FindElement(selenium.ByCSSSelector, "#output")

output := ""
// Wait for run to finish
for {
output, _ = div.Text()
if output != "Waiting for remote server..." {
break
}
time.Sleep(time.Millisecond * 100)
}

fmt.Printf("Got: %s\n", output)
}

我尝试将 "browserName" 更改为 "chrome" 但出现此错误:

panic: got content type "text/html", expected "application/json"

goroutine 1 [running]:
main.main()
/home/user01/Code/golang_src/golang_exercises/33_selenium/selenium.go:28 +0x457
exit status 2

我在 GoDoc selenium 文档中找不到任何关于 chrome 浏览器以及如何通过 selenium-server 连接到它的内容。

我将不胜感激关于这里可能出了什么问题的任何提示。

更新:

似乎删除 URL 地址并将其留空已经解决了连接问题:

wd, err := selenium.NewRemote(caps, "")

即便如此,我仍然对该示例有疑问。主要是它似乎连接到 Go Playground 网站,获取正确的元素,但是在发送输入 elem.SendKeys(code) 时它没有正确发送并且文本框是空的。导致 Playground 输出错误:

Got: can't load package: package main: 
tmp/sandbox573608783/main.go:1:1: expected 'package', found 'EOF'

Program exited.

最佳答案

尝试以 headless 模式运行它:

caps := selenium.Capabilities{"browserName": "chrome"}

chromeCaps := chrome.Capabilities{
Path: "",
Args: []string{
"--headless", // <<<
"--no-sandbox",
"--user-agent=Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_2) AppleWebKit/604.4.7 (KHTML, like Gecko) Version/11.0.2 Safari/604.4.7",
},
}
caps.AddChrome(chromeCaps)

wd, err := selenium.NewRemote(caps, fmt.Sprintf("http://127.0.0.1:%d", port))

关于google-chrome - Golang Selenium 包 - 连接到 selenium 服务器和 headless chrome,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44013029/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com