赞
踩
随着互联网的快速发展,用户更多的会去通过手机端去接触我们开发的产品。我们可以通过微服务,中间件,网络,甚至基于日志对我们的平台稳定性进行监控,当出现告警时,我们可以及时准确的定位系统出现的问题。
然而,当我们对底层能力做好监控时,我们并不能确保系统中存在的风险就能及时掌控了。用户在使用我们系统时直接与我们的Web应用进行交互,为了能够及时了解页面功能是否正常,我们需要对页面进行监控。
Selenium是一个用于Web应用程序测试的工具,可以直接运行在浏览器中,就像真正的用户在操作一样。
Golang语言引入库:
"github.com/tebeka/selenium"
"github.com/tebeka/selenium/chrome"
本地开启selenium服务:
//设置selium服务的选项,设置为空。根据需要设置。
ops := []selenium.ServiceOption{}
service, err := selenium.NewChromeDriverService("./chromedriver.exe", 9515, ops...)
if err != nil {
fmt.Printf("Error starting the ChromeDriver server: %v", err)
}
//延迟关闭服务
defer service.Stop()
当我们在启动浏览器时,需要设置浏览器的兼容性,通过以下配置,启动一个满足我们监控需要的浏览器模式,注,需要将设置好的驱动参数添加进浏览器设置参数中。
启动浏览器:
//设置浏览器兼容性,我们设置浏览器名称为chrome caps := selenium.Capabilities{ "browserName": "chrome", } //禁止图片加载,加快渲染速度 imagCaps := map[string]interface{}{ "profile.managed_default_content_settings.images": 2, } //设置实验谷歌浏览器驱动的参数 chromeCaps := chrome.Capabilities{ MobileEmulation: &chrome.MobileEmulation{ DeviceName: "iPhone X", }, Prefs: imagCaps, Args: []string{ "--headless", //设置Chrome无头模式 "--no-sandbox", "--disable-gpu", }, } //添加浏览器设置参数 caps.AddChrome(chromeCaps)
webDriver, err := selenium.NewRemote(caps, "浏览器hub访问地址")
if err != nil {
log.Printf("创建WebDriver失败: %v", err)
return
}
defer webDriver.Quit()
浏览器启动完成后,打开我们的Web页面,然后基于系统的业务场景,模拟用户行为进行页面操作,对操作结果进行判断,对异常结果进行告警。
//设置超时时间
webDriver.SetPageLoadTimeout(time.Second * time.Duration(config.GetCommonConfig().ErrorTime))
//请求访问地址
getErr := webDriver.Get(“需要打开的url”)
elem, findErr := webDriver.FindElement((selenium.ByCSSSelector, "需要获取的CSS标签" )
elem.CLick()//单机获取到的标签
elem.DoubleCLick()//双击
elem.ButtonDown()//按下鼠标
elem.ButtonUp()//抬起鼠标
webDriver.Close()//关闭页面
webDriver.Forward() //向前翻
webDriver.Back()//向后翻
本文着重介绍通过selenium,创建符合我们需求的浏览器模式,并进行简单的用户操作,结合我们的实际业务场景,加入逻辑判断,日志记录,实时告警,即可完成对我们系统的Web应用进行页面监控。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。