zoukankan      html  css  js  c++  java
  • 使用Docker部署Selenium Grid服务

    在编写调试脚本时一般采用本机上的Selenium环境。在执行用例和协作时,则需要我们部署Selenium服务,使用专门的Selenium服务来执行用例。

    使用Selenium Grid

    部署Selenium服务一般采用Selenium Grid的方式。Selenium Grid采用Hub/Node的模式,一个集中服务Hub,连接多个拥有浏览器的执行Node节点。
    如下图。

    使用Selenium Grid搭建Selenium服务的方式如下。

    1. 下载Selenium Server: https://www.selenium.dev/downloads/

      下载下来是一个名为selenium-server-standalone-3.141.59.jar的jar包
    2. 启动主控服务-Hub
      使用以下命令启动Hub节点
    java -jar selenium-server-standalone-3.141.59.jar -role hub -port 5566
    

    访问Grid Console http://localhost:5566/grid/console

    1. 注册执行节点-Node
    java -jar selenium-server-standalone-3.141.59.jar -role node -hub http://localhost:5566/grid/register/ -port 5577
    

    如果执行节点和Hub节点不知一台机器,则需要把localhost改为Hub节点的ip地址。
    再次访问Grid Console 就可以看到注册的节点和节点所拥有的浏览器。

    使用Selenium Grid服务需要使用webdriver.Remote方法连接服务,并传入desired_capbilities 期望的能力。示例脚本如下。

    from selenium import webdriver
    import time
    
    caps = {
        'platform': 'ANY',
        'browserName': 'chrome',
        'version': '',
    }
    dr = webdriver.Remote('http://localhost:5555/wd/hub', desired_capabilities=caps)
    dr.get('https://www.baidu.com')
    print(dr.title)
    dr.quit()
    

    运行脚本,此时Hub就会选择一个满足你要求的节点执行。

    使用Docker版Selenium

    执行Node服务,一般都会采用Linux系统如Centos或Ubuntu,大部分情况是无界面的,那就不方便安装有界面的Chrome浏览器,虽然有一些解决方法或使用Chrome的Headless模式。
    然而定位问题等也非常不方便,因此推荐使用Docker的方式不是Selenium Grid + Node服务,操作方式如下。

    1. 安装Docker
    1. 下载镜像
    docker pull selenium/hub
    docker pull selenium/node-firefox
    docker pull selenium/node-chrome
    

    注意:selenium/node-firefoxselenium/node-chrome都是无界面的。
    要想能看到实时运行界面,需要使用以下两个镜像之一。

    docker pull selenium/standalone-chrome-debug
    docker pull selenium/standalone-firefox-debug
    
    1. 启动Hub节点的Docker
    docker run -p 5555:4444 -d --name hub selenium/hub
    
    1. 启动Node节点的Docker
    docker run -P -d --link hub:hub --name firefox selenium/node-firefox
    docker run -P -d --link hub:hub --name chrome selenium/node-chrome
    

    或带Debug界面的Node节点

    docker run -d -p 5900:5900 --link hub:hub selenium/node-chrome-debug
    

    如果想要查看实时运行界面,需要使用vnc viewer, 配置如图:

    使用zelenium

    zelenium同样是基于Selenium Grid的Docker镜像,优点是集成了运行日志和录像功能,非常方便易用。
    操作方式参考 Zelenium的初步使用

    参考: https://blog.csdn.net/lb245557472/article/details/91966770
    https://www.cnblogs.com/nanaheidebk/p/10109013.html

  • 相关阅读:
    谁知道怎么获得客户端的语系,不是encoding哦
    如何动态控制弹出窗体的大小
    维权成功!
    KFC的mm在练习做圣代
    CICD自动化发版系统设计简介
    java IO (File类)
    StringBuffer
    Arrays和比较器
    java正则
    Math和Random类
  • 原文地址:https://www.cnblogs.com/superhin/p/13860955.html
Copyright © 2011-2022 走看看