购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

1.7 Selenium Docker的使用

Docker是一个开源的应用容器引擎,也是近年来比较热门的虚拟化技术。它让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。

Docker之所以被人们热捧和关注,主要是因为它轻量级虚拟化和可移植的特性。环境搭建这类工作是Docker技术天然支持的使用场景。它可以很快地复制并启动一个完全一样的环境,并且关闭容器后会自动恢复到启动时的环境。

Docker技术目前在各个行业都有很多的人在尝试和实践,很幸运的是Selenium也是Docker的实践者之一。本章主要介绍如何搭建Docker环境,并在Docker容器中运行Selenium脚本。

1.7.1 Docker环境安装

目前Docker可以在很多的平台下进行安装,包括Linux、MacOS、Windows、AWS、Azure。这里只针对Ubuntu、MacOS和Windows环境搭建进行介绍。

1.Ubuntu安装Docker

Ubuntu下可以安装的Docker有两个版本:Docker CE(社区版)和Docker EE(企业版本)。这里选择Docker CE版本。另外,Docker只支持64位的Ubuntu,且仅支持如下版本。

具体的Docker安装步骤如下。

(1)访问Docker下载页面https://download.docker.com/linux/ubuntu/dists/。

(2)选择对应的Ubuntu版本,如zesty。

(3)进入到pool/stable/路径下。

(4)选择对应的CPU架构,如amd64。

(5)下载.deb文件。

(6)执行sudo dpkg -i /path/to/package.deb命令安装Docker。

(7)执行sudo docker run hello-world命令。

(8)出现如下界面则表示Docker安装成功,如图1-29所示。

2.Windows安装Docker

在Windows下要运行Docker也是需要条件的,具体如下。

图1-29 Ubuntu下启动Docker成功界面

在Windows下安装Docker CE的具体步骤如下。

(1)下载Docker安装包https://download.docker.com/win/stable/InstallDocker.msi。

(2)双击InstallDocker.msi安装文件。

(3)依次确认安装向导中的许可、授权等操作。

(4)完成安装并启动Docker。

(5)启动一个命令行,输入docker run hello-world命令。

(6)出现如下界面则表示安装成功,如图1-30所示。

图1-30 Windows下启动Docker成功界面

3.Mac OS安装Docker

在Mac OS下安装Docker CE具体的系统需求如下。

具体的安装步骤如下。

(1)下载安装包https://download.docker.com/mac/stable/Docker.dmg。

(2)双击安装包。

(3)把鲸鱼图标拖放到Applications目录。

(4)双击Applications目录中的Docker.app。

(5)为安装向导进行授权并完成安装。

(6)检查鲸鱼图标是否在头部状态栏出现。

(7)打开一个终端运行docker run hello-world命令。

(8)出现如下界面表示安装成功,如图1-31所示。

图1-31 Mac OS下启动Docker成功界面

4.Docker Toolbox

如果系统是Windows或Mac,但硬件配置却没有满足要求,还可以通过Docker Toolbox来安装Docker环境。Docker Toolbox是一组Docker工具的集合,是专门为那些硬件条件不够的老系统搭建Docker环境而提供的一个折中方案。

Docker Toolbox安装包主要包括:docker、docker-compose、docker-machine、Docker GUI和virtualBox。

Docker for Windows、Docker for Mac都是直接运行在硬件的虚拟化技术之上。而Docker Toolbox则是让Docker运行在一个Linux的VM之上,每次运行Docker之前都会先运行该VM,然后在这个虚拟机之上运行Docker容器。

在Windows下安装Docker Toolbox可以参考页面:https://docs.docker.com/toolbox/toolbox_ install_windows/。

在Mac下安装Docker Toolbox可以参考页面:https://docs.docker.com/toolbox/toolbox_install_ mac/。

1.7.2 Selenium Docker镜像下载

在完成Docker环境的搭建之后,想要运行Docker还需要下载对应的Docker镜像。Docker镜像在Docker上运行之后,就会生成一个Docker容器,这个容器就是可以提供独立服务的载体。

Selenium Docker项目有多个镜像文件,进入到它的Github项目页面,就可以看到这些具体的Docker镜像。访问https://github.com/SeleniumHQ/docker-selenium,其包含的镜像文件及说明如下。

从这个列表中可以知道,Selenium Docker项目不仅提供了Selenium Server的Docker服务;还提供了Selenium Grid的Docker服务。其可以支持的浏览器包括Chrome、Firefox、PhantomJS,其中,PhantomJS不支持独立的版本。只有Chrome和Firefox支持带Debug的版本,该版本可以查看测试过程中的实际页面运行效果。

了解了Selenium Docker提供的服务之后,就可以根据自己的需求来下载对应的镜像。这里介绍下如何下载一个镜像文件。具体步骤如下。

步骤1 在下载镜像之前,其实还可以通过关键字来搜索镜像文件。命令如下。

      docker search selenium

步骤2 在确定有搜索结果之后,就可以开始下载具体的镜像了。下载独立的Firefox环境镜像的命令如下。

      docker pull selenium/standalone-firefox

步骤3 在镜像下载完成之后,使用如下命令查看本地已下载的镜像。

      docker images

步骤4 运行Selenium的镜像文件。

      docker run –it –p 4444:4444 selenium/standalone-firefox

步骤5 查看启动后的效果如图1-32所示。

图1-32 Docker下启动Selenium

上面的步骤介绍的是下载独立Firefox环境的镜像,下载其他镜像的步骤也是相同的。只有使用Selenium Grid时,在启动镜像的命令上有一些区别。启动一个Hub和一个Chromenode的命令如下。

      docker run -d -p 4444:4444 --name selenium-hub selenium/hub
      docker run -d --link selenium-hub:hub selenium/node-chrome

1.7.3 Docker下运行Selenium脚本

Docker服务提供的Selenium环境都是远程环境,所以运行在Selenium Docker之上的测试脚本必须基于remote WebDriver而开发。以连接Selenium Firefox服务为例的样例代码如下。

      # -*- coding:utf-8 -*-
      from selenium.webdriver.remote import webdriver
      from selenium.webdriver.common.\
                  desired_capabilities import DesiredCapabilities
      u'''打开百度首页,输入Selenium进行搜索'''
      driver = webdriver.WebDriver(
          command_executor="http://192.168.99.100:4444/wd/hub",
          desired_capabilities=DesiredCapabilities.FIREFOX
      )
      driver.get("http://www.baidu.com")
      assert(u"百度" in driver.title)
      driver.find_element_by_id("kw").send_keys("selenium")
      driver.find_element_by_id("su").click()
      assert(u"selenium_百度搜索" in driver.title)
      driver.close()
      driver.quit()

同连接真实环境一样,远程的服务地址既可以是Selenium Server,也可以是Selenium Hub。与真实环境不同的是,代码中的远程服务地址与Docker环境的不同。获取方式分为两种情况,具体如下。

1.原生的Docker环境

所谓原生的Docker环境,是指按照1.7.1节中前三种方式安装的Docker环境。在这种情况下宿主机本身的IP地址就是Selenium的连接IP地址。

2.Toolbox的Docker环境

如果安装的是Toolbox的Docker环境,则可以从Docker终端的启动信息中获取Selenium的连接IP地址,如图1-33中标红的192.168.99.100。

图1-33 Docker中Selenium连接HOST

注意 虽然Selenium Docker是Selenium官方开源的项目,但根据目前使用的情况以及Github上问题反馈的频率来看,Selenium Docker项目还未到非常稳定的版本,可以作为实验和小范围试用。 cmbXCUVWUM7pu9Haj8ofnCWrd/BcxHzAzE/XVgSAKJAPXXl2nvZABpn8cq4SPXSM

点击中间区域
呼出菜单
上一章
目录
下一章
×