go selenium操作

本文介绍了如何使用Selenium进行自动化测试,详细展示了如何配置Chrome浏览器驱动、启动服务、操作浏览器及执行页面操作,包括模拟用户输入、查找元素并进行提交等。

package main

import (
   "fmt"
   "github.com/tebeka/selenium"
   "github.com/tebeka/selenium/chrome"
   "time"
)

func main() {

   const (
      seleniumPath = `D:\Python3\python3.7\chromedriver`
      port         = 9515
   )

   //如果seleniumServer没有启动,就启动一个seleniumServer所需要的参数,可以为空,示例请参见https://github.com/tebeka/selenium/blob/master/example_test.go
   opts := []selenium.ServiceOption{}
   //opts := []selenium.ServiceOption{
   //    selenium.StartFrameBuffer(),           // Start an X frame buffer for the browser to run in.
   //    selenium.GeckoDriver(geckoDriverPath), // Specify the path to GeckoDriver in order to use Firefox.
   //}

   //selenium.SetDebug(true)
   service, err := selenium.NewChromeDriverService(seleniumPath, port, opts...)
   if nil != err {
      fmt.Println("start a chromedriver service falid", err.Error())
      return
   }
   //注意这里,server关闭之后,chrome窗口也会关闭
   defer service.Stop()

   //链接本地的浏览器 chrome
   caps := selenium.Capabilities{
      "browserName": "chrome",
   }

   //禁止图片加载,加快渲染速度
   imagCaps := map[string]interface{}{
      "profile.managed_default_content_settings.images": 2,
   }
   chromeCaps := chrome.Capabilities{
      Prefs: imagCaps,
      Path:  "",
      Args: []string{
         //"--headless", // 设置Chrome无头模式,在linux下运行,需要设置这个参数,否则会报错
         //"--no-sandbox",
         "--user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36", // 模拟user-agent,防反爬
      },
   }
   //以上是设置浏览器参数
   caps.AddChrome(chromeCaps)

   //调起chrome浏览器
   w_b1, err := selenium.NewRemote(caps, fmt.Sprintf("http://localhost:%d/wd/hub", port))
   if err != nil {
      fmt.Println("connect to the webDriver faild", err.Error())
      return
   }
   //关闭一个webDriver会对应关闭一个chrome窗口
   //但是不会导致seleniumServer关闭
   defer w_b1.Quit()
   err = w_b1.Get("https://github.com/tebeka/selenium/blob/master/remote_test.go")
   if err != nil {
      fmt.Println("get page faild", err.Error())
      return
   }

   // 重新调起chrome浏览器
   w_b2, err := selenium.NewRemote(caps, fmt.Sprintf("http://localhost:%d/wd/hub", port))
   if err != nil {
      fmt.Println("connect to the webDriver faild", err.Error())
      return
   }
   defer w_b2.Close()
   //打开一个网页
   err = w_b2.Get("https://www.toutiao.com/")
   if err != nil {
      fmt.Println("get page faild", err.Error())
      return
   }
   //打开一个网页
   err = w_b2.Get("https://studygolang.com/static/pkgdoc/pkg/archive_tar.htm#example-package")
   if err != nil {
      fmt.Println("get page faild", err.Error())
      return
   }
   //w_b就是当前页面的对象,通过该对象可以操作当前页面了
   //........


   // 查找页面中的搜索框
   btn, err := w_b2.FindElement(selenium.ByID, "kw")
   if err != nil {
      //panic(err)
      fmt.Println(err)
   }
   //向搜索框中输入  “你好”
   err = btn.SendKeys("你好")
   if err != nil {
      //panic(err)
      fmt.Println(err)
   }
   //查找提交按钮
   btn1, err := w_b2.FindElement(selenium.ByID, "su")
   if err != nil {
      //panic(err)
      fmt.Println(err)
   }
   //点击提交按钮
   if err := btn1.Click(); err != nil {
      //panic(err)
      fmt.Println(err)
   }

   //获取sessionid
   getsessionid := w_b2.SessionID()
   fmt.Println(getsessionid)

   //返回当前页面连接的url
   geturl,err := w_b2.CurrentURL()
   fmt.Println(geturl)

   //获取当前页面的所有内容
   getpagesource,err := w_b2.PageSource()
   fmt.Println(getpagesource)

   time.Sleep(5 * time.Minute)
   return


}

使用Go语言操作Selenium主要需要以下几个步骤: 1. 安装Go语言和Selenium 安装Go语言:可以在Go官网下载并安装。 安装Selenium:可以使用Go的安装工具go get安装Selenium。在终端中运行以下命令: ``` go get github.com/tebeka/selenium ``` 2. 下载浏览器驱动器 Selenium需要浏览器驱动器来控制浏览器,可以在官网下载对应浏览器版本的驱动器。例如,如果你使用Chrome浏览器,需要下载Chrome驱动器。 3. 编写Go程序 使用Go语言编写程序,通过Selenium控制浏览器实现自动化操作。 以下是一个使用GoSelenium打开Google搜索并搜索关键字的示例程序: ```go package main import ( "fmt" "time" "github.com/tebeka/selenium" "github.com/tebeka/selenium/chrome" ) func main() { // 设置Chrome选项 opts := chrome.Capabilities{ Args: []string{ "--headless", // 不显示浏览器窗口 }, } // 启动Chrome浏览器 wd, err := selenium.NewChromeDriverService("chromedriver.exe", 9515, opts) if err != nil { panic(err) } defer wd.Stop() // 创建Chrome浏览器实例 caps := selenium.Capabilities{ "browserName": "chrome", } wd1, err := selenium.NewRemote(caps, "") if err != nil { panic(err) } defer wd1.Quit() // 打开Google搜索 if err := wd1.Get("https://www.google.com"); err != nil { panic(err) } // 查找搜索框和搜索按钮 searchBox, err := wd1.FindElement(selenium.ByCSSSelector, "input[name='q']") if err != nil { panic(err) } searchButton, err := wd1.FindElement(selenium.ByCSSSelector, "input[name='btnK']") if err != nil { panic(err) } // 在搜索框中输入关键字 if err := searchBox.SendKeys("golang"); err != nil { panic(err) } // 点击搜索按钮 if err := searchButton.Click(); err != nil { panic(err) } // 等待页面加载完成 time.Sleep(5 * time.Second) // 获取搜索结果标题 title, err := wd1.Title() if err != nil { panic(err) } // 输出搜索结果标题 fmt.Println(title) } ``` 这个程序使用Chrome浏览器打开Google搜索,搜索关键字"golang",然后输出搜索结果标题。注意,需要将程序中的驱动器路径改为你自己的路径。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值