Docker——部署selenium grid进行分布式自动化测试

Selenium Standalone Server Hub和Chrome、Firefox的节点配置的Docker镜像,Hub分发到Node子节点进行分布式web自动化测试

一、安装selenium环境

1、docker下载主节点hub镜像和子节点各浏览器node镜像

docker pull selenium/hub
docker pull selenium/node-chrome-debug
docker pull selenium/node-firefox-debug

2、查看docker selenium镜像

selenium/node-firefox-debug                                    latest              c24a87262cd5        10 months ago       807MB
selenium/node-chrome-debug                                     latest              6bdc197e1f6f        10 months ago       952MB
selenium/hub                                                   latest              09508196737d        10 months ago       310MB

 3、启动容器

hub主节点:负责对子节点分发请求
docker run -d --name wxhub -p 4444:4444 selenium/hub
node子节点:--link 主节点进行关联,debug版本可以进行远程调试 使用vnc 密码 secret
docker run -d -P -p 5900:5900 --link wxhub:hub selenium/node-chrome-debug
//docker run -d -P -p 5901:5900 --link wxhub:hub selenium/node-firefox-debug
单个容器可以运行5个浏览器实例:
docker run -d -p 5902:5900 --link wxhub:hub --name wxchrome55 -e NODE_MAX_INSTANCES=5 -e NODE_MAX_SESSION=5 -e NODE_REGISTER_CYCLE=5000 -e DBUS_SESSION_BUS_ADDRESS=/dev/null selenium/node-chrome-debug

4、查看docker容器

MacBookPro:~ wuxi$ docker ps
CONTAINER ID        IMAGE                        COMMAND                  CREATED             STATUS              PORTS                    NAMES
5a5d1086f5f2        selenium/node-chrome-debug   "/opt/bin/entry_poin…"   9 months ago        Up About a minute   0.0.0.0:5902->5900/tcp   wxchrome55
1fe8d3670600        selenium/node-chrome-debug   "/opt/bin/entry_poin…"   10 months ago       Up About a minute   0.0.0.0:5900->5900/tcp   wxchromelast
533bb64aaf4b        selenium/hub                 "/opt/bin/entry_poin…"   10 months ago       Up About a minute   0.0.0.0:4444->4444/tcp   wxhub

打开地址:http://localhost:4444/grid/console 可以看到右边的chrome 有5个浏览器图标

查看详情:可以看到两node节点都注册到了hub 4444端口,还有其他一些属性如下,需要的话自己可以后面研究下

二、java代码编写

如果部署到其他机器,localhost可以换成其他IP地址

public static String WebDriverUrl = "http://localhost:4444/wd/hub";
/**
 docker运行
 **/
public WxWebdriver() throws MalformedURLException {

    DesiredCapabilities capabilities = DesiredCapabilities.chrome();
    capabilities.setBrowserName("chrome");
    //加载启动项
    capabilities.setCapability("chromeOptions", chromeOptions());
   driver = new RemoteWebDriver(new URL(WebDriverUrl),capabilities);

}

设置chrome启动属性:

public static ChromeOptions chromeOptions() {

    Map<String, Object> prefs = new HashMap<String, Object>();
    ChromeOptions options = new ChromeOptions();
    //无界面参数
    //options.addArguments("headless");
    //禁用沙盒
    //options.addArguments("no-sandbox");
    //禁用插件
    //options.addArguments("--disable-plugins","--disable-images","--start-maximized","--disable-javascript");
    //options.addArguments("–-user-data-dir==/Users/wuxi/Library/Application Support/Google/Chrome");

    //prefs.put("profile.managed_default_content_settings.images", 2);
    //prefs.put("profile.default_content_setting_values.notifications", 2);
    options.addArguments("--incognito");
    options.setExperimentalOption("prefs", prefs);
    //options.addArguments("--lang=" + "en_GE");
    return options;
}

 

运行代码打开百度,查看浏览器启动情况,可以看到单实例的node节点已经开启,浏览器图标置灰,容器端口为:0.0.0.0:5900->5900/tcp 

用VNC连接到server查看浏览器打开情况,密码secret

 

 

参考:

https://github.com/SeleniumHQ/docker-selenium

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值