您的位置:

使用goselenium实现Web自动化测试

一、介绍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)