编程开源技术交流,分享技术与知识

网站首页 > 开源技术 正文

golang从入门到精通,搭建远程selenium自动化测试环境

wxchong 2024-07-25 13:31:55 开源技术 12 ℃ 0 评论

用Golang做爬虫,当面对页面存在复杂的JS的情况,使用普通的http.get或者http.post,如不做特殊处理,将无法解析页面源代码。

在使用python的过程中,可以使用selenium进行爬取数据,或使用selenium自动化测试,那么用Golang怎么处理这个问题呢?

其实Golang中也有selenium,Selenium 作为一个用于 Web 应用程序测试的工具,可以模拟真实浏览器进行操作,也可以实现鼠标点击、滚轮、输入等用户日常操作。

我们通过2节课的学习,实现1、本地启动selenium服务;2、远程启动selenium服务

上节我们学习了怎么本地启动selenium服务,并实现获取网页源代码的功能,

那么本节我们学习下怎么远程启动selenium服务。

1、远程启动selenium服务

配置环境

1、下载"github.com/tebeka/selenium"模块
2、下载chrome浏览器
3、下载chrome版本一致的chromedriver.exe

启动chromedriver.exe

chromedriver.exe --port=9515 --url-base=wd/hub --verbose

源码及解析

package main

import (
	"fmt"
	"github.com/tebeka/selenium"
	"log"
)

func main() {
	// 连接到本地运行的WebDriver实例。
	// 功能配置WebDriver进程和目标浏览器,带有标准和特定于浏览器的选项。
	caps := selenium.Capabilities{"browserName": "chrome"}
	//NewRemote创建新的远程客户端,启动一个新的会话。
	//urlPrefix:Selenium服务器的URL必须以协议(http, https,…)为前缀。
	//如果urlPrefix是空字符串,则默认使用DefaultURLPrefix。
	wd, err := selenium.NewRemote(caps, fmt.Sprintf("http://localhost:9515/wd/hub"))

	if err != nil {
		panic(err.Error())
	}
	//Quit结束当前会话。
	//浏览器实例将被关闭。
	defer wd.Quit()
	//Get将浏览器打开提供的URL。
	if err := wd.Get("http://www.baidu.com"); err != nil {
		panic(err)
	}
	for {
		//PageSource返回当前页面的源代码。
		source, err := wd.PageSource()
		if err != nil {
			return
		}
		log.Println(source)
	}
}

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表