使用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)

原創文章,作者:DCNI,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/132949.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
DCNI的頭像DCNI
上一篇 2024-10-03 23:55
下一篇 2024-10-03 23:55

相關推薦

  • Python Web開發第三方庫

    本文將介紹Python Web開發中的第三方庫,包括但不限於Flask、Django、Bottle等,並討論它們的優缺點和應用場景。 一、Flask Flask是一款輕量級的Web…

    編程 2025-04-29
  • JDK Flux 背壓測試

    本文將從多個方面對 JDK Flux 的背壓測試進行詳細闡述。 一、Flux 背景 Flux 是 JDK 9 對響應式編程的支持。它為響應式編程提供了一種基於推拉模型的方式,以支持…

    編程 2025-04-29
  • Web程序和桌面程序的區別

    Web程序和桌面程序都是進行軟體開發的方式,但是它們之間存在很大的區別。本文將從多角度進行闡述。 一、運行方式 Web程序運行於互聯網上,用戶可以通過使用瀏覽器來訪問它。而桌面程序…

    編程 2025-04-29
  • Python操作Web頁面

    本文將從多個方面詳細介紹Python操作Web頁面的技巧、方法和注意事項。 一、安裝必要的庫 在Python中操作Web頁面,需要用到一些第三方庫。 pip install req…

    編程 2025-04-28
  • 如何使用WebAuth保護Web應用

    WebAuth是用於Web應用程序的一種身份驗證技術,可以提高應用程序的安全性,防止未經授權的用戶訪問應用程序。本文將介紹如何使用WebAuth來保護您的Web應用程序。 一、什麼…

    編程 2025-04-28
  • Powersploit:安全評估與滲透測試的利器

    本文將重點介紹Powersploit,並給出相關的完整的代碼示例,幫助安全人員更好地運用Powersploit進行安全評估和滲透測試。 一、Powersploit簡介 Powers…

    編程 2025-04-28
  • Python編寫Web程序指南

    本文將從多個方面詳細闡述使用Python編寫Web程序,並提供具有可行性的解決方法。 一、Web框架的選擇 Web框架對Web程序的開發效率和可維護性有著重要的影響,Python中…

    編程 2025-04-28
  • Python介面自動化測試

    本文將從如下多個方面對Python編寫介面自動化進行詳細闡述,包括基本介紹、常用工具、測試框架、常見問題及解決方法 一、基本介紹 介面自動化測試是軟體測試中的一種自動化測試方式。通…

    編程 2025-04-27
  • 有哪些Python軟體可以用來構建Web應用

    Python語言是一種膠水語言,可以和多種語言以及系統進行交互,廣泛應用於多個領域。在Web應用開發領域,Python是一個功能強大的語言,在Python社區中有許多優秀的Web應…

    編程 2025-04-27
  • 用Python進行Web開發

    本文將介紹如何使用Python進行Web開發。主要涵蓋以下幾個方面: 一、Flask框架 Flask是一個輕量級的Web應用框架,它使用Python語言編寫。Flask框架的設計理…

    編程 2025-04-27

發表回復

登錄後才能評論