go如何调用chrome打开指定网页

Imstrong · 2017-12-27 12:48:07 · 7688 次点击

windows 下利用 cmd /C start htttp://www.baidu.com

linux 下利用 xdg-open http://www.baidu.com

mac 下利用start http://www.baidu.com

start, xdg-open 分别是windows和mac, linux打开系统默认程序的工具,所以你要使用谷歌打开就必须要把谷歌浏览器设置为默认,linux下不要使用root权限使用xdg-open,windows下失败可以尝试在管理员权限下的cmd执行你的程序

程序我就偷懒不写了哈,调用子程序就行了。go在windows下好像不需要 cmd /C,好像会自动使用shell

#1
更多评论

mark,不知道为什么我同样的语句,希望实现的就是自动打开默认浏览器访问个网址,就是出不来效果,回头再试试。

#2

ChromeDriver PhantomJS Selenium 可以使用这个第三方库 github.com/sclevine/agouti

package main

import (
    "fmt"
    "time"

    "github.com/sclevine/agouti"
)

func main() {
    // cd := agouti.ChromeDriver()
    // cd := agouti.PhantomJS()
    // cd := agouti.Selenium()
    cd := agouti.Selendroid("./selenium-server-standalone-3.5.2.jar")

    err := cd.Start()
    if err != nil {
        fmt.Println("Start webDriver:", err)
        return
    }
    defer cd.Stop()

    pg, err := cd.NewPage(agouti.Browser("chrome"))
    if err != nil {
        fmt.Println("NewPage:", err)
        return
    }

    err = pg.SetPageLoad(10000)
    if err != nil {
        fmt.Println("SetPageLoad:", err)
        return
    }

    err = pg.SetScriptTimeout(1000)
    if err != nil {
        fmt.Println("SetScriptTimeout:", err)
        return
    }

    err = pg.Navigate("https://www.baidu.com/")
    if err != nil {
        fmt.Println("Navigate:", err)
        return
    }

    for {

        title, err := pg.Title()
        if err != nil {
            fmt.Println("Title:", err)
            return
        }
        fmt.Println(title)
        sc := pg.FindByLink("新闻")

        // str, err := sc.Text()
        // if err != nil {
        //     fmt.Println("str:", err)
        //     return
        // }
        // fmt.Println(str)

        err = sc.Click()
        if err != nil {
            fmt.Println("click:", err)
            return
        }
        title, err = pg.Title()
        if err != nil {
            fmt.Println("Title2:", err)
            return
        }
        fmt.Println(title)

        //sleep
        time.Sleep(2 * time.Second)

        err = pg.Back()
        if err != nil {
            fmt.Println("Back:", err)
            return
        }
        //sleep
        time.Sleep(2 * time.Second)

    }
}
#3