(七) 创建docker selenium容器

SeleniumHQ官方项目:https://github.com/seleniumHQ/docker-selenium 项目目前快速迭代中。

Selenium



这里主要针对的是 Selenium Grid,它用于分布式自动化测试,就是一套Selenium 代码可在不同的环境上运行。刚好,Docker可快速的创建各种环境。

Selenium Grid 有两个概念

hub :主节点,你可以看作 “北京总公司的测试经理”。

node:分支节点,你可以看作 “北京总公司的测试小兵A” 和 “上海分公司的测试小兵B”,还有 “深圳分公司的测试小兵C” …。

也就是说在Selenium Grid中只能有一个主hub,但可以在本地或远程建立 N 多个分支node,测试脚本指向主hub,由主hub 分配给本地/远程node 运行测试用例。

docker selenium 环境安装



以Ubuntu为例,在Ubuntu下安装Docker,请参考:Docker安装(Ubuntu)

docker hub(仓库):

https://hub.docker.com/r/selenium/hub/

1、下载主hub镜像(北京总公司的测试经理)

$ sudo docker pull selenium/hub

2、下载主node chrome 镜像(上海分公司的测试小兵B)

$ sudo docker pull selenium/node-chrome

3、查看镜像

$  sudo docker images

REPOSITORY            TAG       IMAGE ID         CREATED       SIZE
selenium/node-chrome  latest    1eba57bd3d79     12 days ago   823MB
selenium/hub          latest    d1437f7d9f87     12 days ago   285MB

4、启动主hub容器

$ sudo docker run -d -P --name selenium-hub selenium/hub
  • -d 表示容器以守护态(Daemonized)形式运行。
  • -P 表示 Docker 会随机映射一个 49000~49900 的端口到内部容器开放的网络端口。

5、启动分支node chrome 容器

$ sudo docker run -d --link selenium-hub:hub selenium/node-chrome
  • –link 通过 link 关联 selenium-hub 容器,并为其设置了别名hub

6、查看容器

$ sudo docker images
CONTAINER ID     IMAGE                  COMMAND                  CREATED        STATUS        PORTS                     NAMES
9cd0dac69875     selenium/hub           "/opt/bin/entry_poin…"   12 hours ago   Up 12 hours   0.0.0.0:32768->4444/tcp   selenium-hub
18d139a6c36d     selenium/node-chrome   "/opt/bin/entry_poin…"   12 hours ago   Up 12 hours                             eloquent_gates

这里需要注意,Selenium/hub 容器的端口号为 4444,对Ubuntu映射的端口为 32768,前面通过 -P 参数自动分配。

工作原理:

selenium Grid脚本 -> ubuntu(32768) -> Hub容器(4444) -> Node Chrome 容器

创建Grid测试脚本与运行



1、编写Selenium Grid 脚本(grid_demo.py)

from selenium import webdriver
from time import sleep

driver = webdriver.Remote(
command_executor=‘http://127.0.0.1:32768/wd/hub‘,
desired_capabilities={‘browserName‘: ‘chrome‘}
)

driver.get(‘https://www.baidu.com‘)
print("get baidu")

driver.find_element_by_id("kw").send_keys("docker selenium")
driver.find_element_by_id("su").click()

sleep(1)

driver.get_screenshot_as_file("/home/fnngj/mypro/baidu_img.png")

driver.quit()
print("end...")

注意访问的端口号和浏览器,因为我们只启动了node chrome容器,如果这里设置Friefox的话,需要你启动 node firefox 容器,hub找不到合适的node会报错。

另外,我们为了验证脚本是否真的执行加上了打印和截图。

2、运行脚本

$ python3 grid_demo.py

get baidu

end...

3、查看截图

百度页面是被渲染出来了,但中文有乱码。

原文地址:https://www.cnblogs.com/jason89/p/9034118.html

时间: 2024-10-30 23:59:16

(七) 创建docker selenium容器的相关文章

Docker的容器创建以及基本命令

1. 使用docker run创建docker容器,(docker命令都是以docker开头的)安装完docker后,大多数情况下,本机上面一般没有docker镜像的,执行docker run的时候一般先查看本地镜像,如果本地没有,则会自动去Docker Hub上下载镜像.Docker的域名解析服务器是google的,因此需要将8.8.8.8和8.8.4.4的DNS服务器IP添加到域名系统中去.Ubuntu下的操作是打开/etc/resolv.conf,添加两行nameserver 8.8.8.

docker通过模板创建镜像以及容器、仓库和数据管理

笔记内容:docker通过模板创建镜像以及容器.仓库和数据管理笔记日期:2018-02-05 25.5 通过模板创建镜像 25.6 容器管理 25.7 仓库管理 25.8 数据管理 25.5 通过模板创建镜像 1.既然是通过模板创建镜像,那么首先肯定得先下载一个模板,地址如下: http://openvz.org/Download/templates/precreated 打开以上网址选择一个模板进行下载,我这里下载的是centos-6-x86-minimal.tar.gz (signature

zun 不能创建 docker 容器,报错: datastore for scope "global" is not initialized

问题:zun不能创建docker容器,报错:datastore for scope "global" is not initialized 解决:修改docker 服务配置文件: [[email protected] ~]# cat /usr/lib/systemd/system/docker.service [Unit] Description=Docker Application Container Engine Documentation=https://docs.docker.

Spring Cloud+Docker创建微服务容器实例

1. 配置windows环境 安装windows版的docker 此步骤可自行百度一下安装方式. 配置maven环境变量 在path中添加maven的bin目录,正常情况下,maven的MAVEN_HOME已经存在了,在此基础上加/bin即为maven的path环境变量 在path中添加 在命令行中执行mvn --version,检查maven的配置是否正确 2. 配置intellij idea 打开windows版的docker,在settings窗口中勾选Expose daemon on t

Docker数据容器卷的创建备份和恢复

数据卷容器 如果容器之间需要共享一些持续更新的数据,最简单的方式就是是用户数据卷容器,数据卷容器就是一种普通容器,专门提供数据卷供其它容器挂载使用. 创建数据卷容器dbdatadocker run -v /dbdata:/dbdata --name dbdata centos 创建db1和db2两个容器,并使用--volumes-from挂载dbdata容器中的数据卷 docker run --volumes-from dbdata --name db1 centosdocker run --v

(九)创建 Docker 镜像

创建镜像有很多方法,用户可以从 Docker Hub 获取已有镜像并更新,也可以利用本地文件系统创建一个. 修改已有的镜像 查看已有的镜像: $ sudo docker images REPOSITORY TAG IMAGE ID CREATED SIZE ubuntu latest 2a4cca5ac898 9 days ago 111MB 下面进入到ubuntu容器中: $ sudo docker run -t -i ubuntu /bin/bash [email protected]:/#

.Net Core(完) 创建Docker镜像

使用Docker可以在操作系统上分出多个独立的区域(容器/Container),各个容器之间基本隔离,且可以有自己单独的系统配置.软件等,各个容器之间的软件基本不会互相干扰.Docker上配置好的容器可以随意移动到其它计算机中运行.Docker可以很好得保证应用之间的互相隔离,同时Docker的进程跑在原生操作系统上,不会像虚拟机哪样性能差.Docker还能更好地满足网站对于可伸缩性的要求,可以按需自动扩容,同时docker还具有"即抛"的特性,访问高峰过去后也可以减少容器的数量. 一

Docker入门教程(七)Docker API

Docker入门教程(七)Docker API [编者的话]DockerOne组织翻译了Flux7的Docker入门教程,本文是系列入门教程的第七篇,重点介绍了Docker Registry API和Docker Hub API. 纵观我们的Docker系列教程,我们已经讨论了很多重要的Docker组件与命令.在本文中,我们将继续深入学习Docker:剖析Docker APIs. Docker提供了很多的API以便用户使用.这些API包含四个方面: Docker Registry API Doc

2017.2.21 activiti实战--第七章--Activiti与容器集成

学习资料:<Activiti实战> 第七章 Activiti与容器集成 本章讲解activiti-spring可以做的事情,如何与现有系统集成,包含bean的注入.统一事务管理等. 7.1 流程引擎工厂 7.1.1 ProcessEngine 创建processEngine的方法有三种: 1 通过配置文件 2 测试中通过ActivitiRule 3 通过ProcessEngines类 7.1.2 ProcessEngineFactory 与spring集成的目的有两个: 1 通过spring统