一、介绍goselenium
goselenium是一个基于Go编程语言的自动化测试框架,它使用Selenium WebDriver API,可以帮助我们以编程的方式控制浏览器,模拟用户在Web上的操作。
goselenium提供了开启、关闭浏览器,设置代理服务器,最大化浏览器窗口,获取页面元素,进行页面跳转,填写表单,模拟鼠标和键盘操作等一系列操作。
package main
import (
"fmt"
"time"
"github.com/tebeka/selenium"
"github.com/tebeka/selenium/chrome"
)
func main() {
// 启动Chrome浏览器
caps := selenium.Capabilities{"browserName": "chrome"}
chromeCaps := chrome.Capabilities{
Path: "/path/to/chrome", // Chrome浏览器的路径
}
caps.AddChrome(chromeCaps)
wd, err := selenium.NewRemote(caps, "http://localhost:9515")
if err != nil {
panic(err)
}
defer wd.Quit()
// 打开网站
err = wd.Get("https://www.baidu.com")
if err != nil {
panic(err)
}
// 搜索关键字
searchBox, err := wd.FindElement(selenium.ByCSSSelector, "#kw")
if err != nil {
panic(err)
}
searchBox.SendKeys("goselenium")
searchBox.Submit()
// 等待搜索结果出现
time.Sleep(5 * time.Second)
// 获取搜索结果
result, err := wd.FindElement(selenium.ByCSSSelector, "div.result h3 a")
if err != nil {
panic(err)
}
fmt.Printf("搜索结果:%s\n", result.Text())
}
二、启动并关闭浏览器
goselenium可以启动多个浏览器,其中常用的浏览器包括Chrome、Firefox、Safari等。下面的示例代码展示如何启动Chrome浏览器和关闭浏览器:
// 启动Chrome浏览器
caps := selenium.Capabilities{"browserName": "chrome"}
chromeCaps := chrome.Capabilities{
Path: "/path/to/chrome", // Chrome浏览器的路径
}
caps.AddChrome(chromeCaps)
wd, err := selenium.NewRemote(caps, "http://localhost:9515")
if err != nil {
panic(err)
}
defer wd.Quit() // 关闭浏览器
三、控制浏览器窗口
goselenium可以修改浏览器窗口的大小、位置和最大化。下面的示例代码展示如何设置浏览器窗口的大小和最大化:
// 设置浏览器窗口大小
err = wd.SetWindowRect(selenium.Rect{Width: 1024, Height: 768})
if err != nil {
panic(err)
}
// 最大化浏览器窗口
err = wd.MaximizeWindow("")
if err != nil {
panic(err)
}
四、获取页面元素
goselenium可以获取页面元素,其中包括元素的ID、名称、类名、CSS选择器、链接文本和标签名称等。下面的示例代码展示如何获取页面元素:
// 获取搜索框
searchBox, err := wd.FindElement(selenium.ByCSSSelector, "#kw")
if err != nil {
panic(err)
}
// 获取搜索按钮
searchButton, err := wd.FindElement(selenium.ByCSSSelector, "#su")
if err != nil {
panic(err)
}
五、操作页面元素
goselenium可以对页面元素进行填写、点击、清空、提交等操作。下面的示例代码展示如何在搜索框中填写关键字并点击搜索:
// 填写关键字
searchBox.SendKeys("goselenium")
// 点击搜索按钮
searchButton.Click()
六、等待页面元素出现
goselenium可以等待页面元素出现,这是Web自动化测试中必不可少的一步。下面的示例代码展示如何等待搜索结果出现:
// 等待元素出现
searchResults, err := wd.WaitUntil(
selenium.FindElement(selenium.ByCSSSelector, "#search-results"),
10*time.Second,
)
if err != nil {
panic(err)
}
七、模拟鼠标和键盘操作
goselenium可以模拟鼠标和键盘操作,包括按键、释放键、单击、双击、拖拽等。下面的示例代码展示如何模拟鼠标和键盘操作:
// 模拟单击
searchButton.Click()
// 模拟按键
searchBox.SendKeys(selenium.ControlKey + "a")
searchBox.SendKeys(selenium.DeleteKey)
八、设置代理服务器
goselenium可以使用代理服务器来进行Web自动化测试,支持HTTP代理、SOCKS代理和FTP代理。下面的示例代码展示如何使用HTTP代理服务器:
// 设置代理服务器
proxy := selenium.Proxy{
HTTPProxy: "http://localhost:8080",
}
caps.SetProxy(proxy)