Golang之selenium+k8s部署玩转模拟手机页面监控

这篇具有很好参考价值的文章主要介绍了Golang之selenium+k8s部署玩转模拟手机页面监控。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Golang之selenium+k8s部署玩转模拟手机页面监控



前言

随着互联网的快速发展,用户更多的会去通过手机端去接触我们开发的产品。我们可以通过微服务,中间件,网络,甚至基于日志对我们的平台稳定性进行监控,当出现告警时,我们可以及时准确的定位系统出现的问题。
然而,当我们对底层能力做好监控时,我们并不能确保系统中存在的风险就能及时掌控了。用户在使用我们系统时直接与我们的Web应用进行交互,为了能够及时了解页面功能是否正常,我们需要对页面进行监控。


一、Selenium是什么?

Selenium是一个用于Web应用程序测试的工具,可以直接运行在浏览器中,就像真正的用户在操作一样。

Golang语言引入库:

"github.com/tebeka/selenium"
"github.com/tebeka/selenium/chrome"

二、实现页面监控步骤

1.开启selenium服务

  • 1.如果我们的监控服务需要部署在k8s中,我们可以先在k8s中搭建一个Selenium-hub服务,以便于监控服务在k8s搭建后直接调用Selenium工具。
  • 2.如果监控在windows环境,可以下载chromedriver.exe文件,然后本地启动selenium服务。

本地开启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()

2.启动浏览器

当我们在启动浏览器时,需要设置浏览器的兼容性,通过以下配置,启动一个满足我们监控需要的浏览器模式,注,需要将设置好的驱动参数添加进浏览器设置参数中。

  1. headless,无头模式
    当我们考虑在监控服务部署在K8s,我们需要创建无头模式,这时浏览器不需要显示页面,程序在后台运行的同时,渲染页面也能保障我们对性能的要求.
  2. profile.managed_default_content_settings.images ,不加载网页中的图片
    当网页中有大量图片需要加载时,使用此参数可以极大的提高代码运行速度,搭配无头模式更好,因为在后台运行的浏览器控制并不需要加载图片。
  3. MobileEmulation: 将浏览器设置成手机
  4. disable-gpu,禁用GPU加速模式
  5. hide-scrollbars隐藏滚动条,应对一些特殊页面
  6. disable-popup-blocking:,禁用弹窗

启动浏览器:

//设置浏览器兼容性,我们设置浏览器名称为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)

3.调用已创建的浏览器

webDriver, err := selenium.NewRemote(caps, "浏览器hub访问地址")
  if err != nil {
    log.Printf("创建WebDriver失败: %v", err)
    return
  }
  defer webDriver.Quit()

4.页面操作

浏览器启动完成后,打开我们的Web页面,然后基于系统的业务场景,模拟用户行为进行页面操作,对操作结果进行判断,对异常结果进行告警。

  1. 首先需要确保系统的Web服务可以正常打开,我们要打开监控的地址,然后查询页面上的正常展示时某一个CSS标签,来对页面是否正常展示。
//设置超时时间
webDriver.SetPageLoadTimeout(time.Second * time.Duration(config.GetCommonConfig().ErrorTime))
//请求访问地址
getErr := webDriver.Get(“需要打开的url”)

elem, findErr := webDriver.FindElement((selenium.ByCSSSelector, "需要获取的CSS标签" )
  1. 当我们需要点击页面的某一个按钮或者图片时,我们依旧可以基于CSS标签获取我们需要的Element,对该Element进行操作,如单击,双击。
elem.CLick()//单机获取到的标签
elem.DoubleCLick()//双击
elem.ButtonDown()//按下鼠标
elem.ButtonUp()//抬起鼠标
  1. 同样,对于页面也后很多的操作,如关闭页面,向前,向后翻页等操作。
webDriver.Close()//关闭页面
webDriver.Forward() //向前翻
webDriver.Back()//向后翻

总结

本文着重介绍通过selenium,创建符合我们需求的浏览器模式,并进行简单的用户操作,结合我们的实际业务场景,加入逻辑判断,日志记录,实时告警,即可完成对我们系统的Web应用进行页面监控。文章来源地址https://www.toymoban.com/news/detail-762538.html

到了这里,关于Golang之selenium+k8s部署玩转模拟手机页面监控的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 玩转k8s(四)—— 通过Service访问Pod

            我们不应该期望k8s Pod是健壮的,而是要假设Pod中的容器很可能因为各种原因发生故障而死掉。Deployment等Controller会通过动态的创建和销毁Pod来保证应用整体的健壮性。换句话说, Pod是脆弱的,但应用是健壮的 。         每个Pod都有自己的IP地址,当Controller用新的

    2024年02月05日
    浏览(39)
  • 大数据-玩转数据-深入浅出K8S

    Docker 是一个开源的、轻量级的容器引擎,和 VMware 虚拟机相比,Docker 使用容器承载应用程序,而不使用操作系统,所以它的开销很少,性能很高。但是,Docker 对应用程序的隔离不如虚拟机彻底,所以它并不能完全取代 VMware。 在传统的开发过程中(我之前的开发过程),以

    2024年02月04日
    浏览(52)
  • 07-k8s中secret资源02-玩转secret

    第一步:将想要的数据信息【key:value】中的value值,使用base64编码后,写入secret资源清单中; 第二步:创建secret资源; 第三步:pod资源引用secret资源; [root@k8s231 ~]# echo xinjizhiwa | base64 eGluaml6aGl3YQo= [root@k8s231 secrets]# vim secret.yaml apiVersion: v1 kind: Secret metadata:   name: secret-01 #用户

    2024年02月20日
    浏览(39)
  • K8S单机部署-01.单机部署K8S

    转载请注明出处 K8S单机部署-00.旧版本卸载 K8S单机部署-01.单机部署K8S K8S单机部署-02.Kuboard面板部署 K8S单机部署-03.验证K8S的第一个Deployment K8S单机部署-04.NFS服务器搭建 K8S单机部署-05.静态持久化之PV、PVC(基于NFS) K8S单机部署-06.动态持久化StorageClass(基于NFS) K8S单机部署-07.调整

    2024年04月24日
    浏览(36)
  • 可视化k8s页面(Kubepi)

    Kubepi是一个简单高效的k8s集群图形化管理工具,方便日常管理K8S集群,高效快速的查询日志定位问题的工具 随便在哪个节点部署,我这里在主节点部署 查看是否安装成功 登录地址: http://IP:8000 默认用户名:admin 默认密码:kubepi 获取登录需要用到的ip地址和登录token: # 在 k

    2024年01月20日
    浏览(53)
  • K8s进阶之路-安装部署K8s

    参考:(部署过程参考的下面红色字体文档链接就可以,步骤很详细,重点部分在下面做了标注)  安装部署K8S集群文档: 使用kubeadm方式搭建K8S集群 · GitBook 本机: master:10.0.0.13 master            node1: 10.0.0.11 node1            node2: 10.0.0.12 node2 #systemctl stop firewalldsy

    2024年02月22日
    浏览(47)
  • k8s入门:裸机部署 k8s 集群

    系列文章 第一章:✨ k8s入门:裸机部署 k8s 集群 第二章:✨ k8s入门:部署应用到 k8s 集群 第三章:✨ k8s入门:service 简单使用 第四章:✨ k8s入门:StatefulSet 简单使用 第五章:✨ k8s入门:存储(storage) 第六章:✨ K8S 配置 storageclass 使用 nfs 动态申领本地磁盘空间 第七章:

    2023年04月20日
    浏览(45)
  • K8S:K8S部署常见错误及解决方法

    目录 1、node节点kubelet服务起不来 2、安装cni网络插件时 kubectl get node master和node一直noready①有延时,需要等待10分钟左右,超过15分钟则有问题 3、部署报错kubectl get nodes No resources found 4、k8s部署报错error:kubectl get csr No resources found 问题:node节点kublet起不来服务器内存资源不足

    2024年02月09日
    浏览(45)
  • k8s 入门到实战--部署应用到 k8s

    k8s 入门到实战 01.png 本文提供视频版: 最近这这段时间更新了一些 k8s 相关的博客和视频,也收到了一些反馈;大概分为这几类: 公司已经经历过服务化改造了,但还未接触过云原生。 公司部分应用进行了云原生改造,但大部分工作是由基础架构和运维部门推动的,自己只

    2024年02月09日
    浏览(40)
  • 使用golang 基于 OpenAI Embedding + qdrant 实现k8s本地知识库

    文章博客地址:套路猿-使用golang 基于 OpenAI Embedding + qdrant 实现k8s本地知识库 将数据集 通过 openai embedding 得到向量+组装payload,存入 qdrant 用户进行问题搜索,通过 openai embedding 得到向量,从 qdrant 中搜索相似度大于0.8的数据 从 qdrant 中取出相似度高的数据 将获取到的QA,组装成 pr

    2024年02月08日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包