每年,来自世界各地的测试自动化工程师都研究最新的工具和技术,以使其测试自动化环境更加稳定,更快,更易于使用和维护。这对于确保公司的框架在任何时候都大规模实施至关重要。无论哪种方式,过时的过时框架都会很快过时。
众所周知,Selenium Grid在CI管道中难以设置,不稳定并且难以部署和/或版本控制。一种简单,稳定和方便的方法是使用预构建的Selenium Docker映像。
注意:此方法的唯一缺点是IE(Internet Explorer)不支持此方法,因为当前无法将Windows操作系统放入容器中。
准备工作
首先,您需要先在计算机上安装Docker和Docker Compose。如果您使用的是Windows 10或Mac,则两者都将使用Docker Desktop安装。
运行网格
官方的Selenium Docker Hub存储库包含针对Selenium Hub,Firefox和Chrome节点的预构建Docker映像。
在本地Selenium Grid中使用它们的最简单方法是在项目的根目录中创建Docker Compose文件。简单地命名文件
docker-compose.yml
。
我在下面提供了一个创建以下网格的示例:
- 一个硒集线器
- 一个Chrome节点
- 一个Firefox节点
#docker-compose.yml
version: "3"
services:
selenium-hub:
image: selenium/hub:3.141.59-neon
container_name: selenium-hub
ports:
- "4444:4444"
chrome:
image: selenium/node-chrome:3.141.59-neon
volumes:
- /dev/shm:/dev/shm
depends_on:
- selenium-hub
environment:
- HUB_HOST=selenium-hub
- HUB_PORT=4444
firefox:
image: selenium/node-firefox:3.141.59-neon
volumes:
- /dev/shm:/dev/shm
depends_on:
- selenium-hub
environment:
- HUB_HOST=selenium-hub
- HUB_PORT=4444
Docker Compose文件描述了如何设置网格。有关创建Docker Compose文件的更多信息,请参阅官方文档。
要启动网格,只需使用任何终端(
PowerShell
或cmd
在Windows上),即可在项目的根目录中运行以下命令:
docker-compose up
电网连接
因为集线器正在侦听本地计算机的端口4444,所以您可以按照通常的方式连接到Selenium Grid。这是一个示例,其中我们将驱动程序配置为使用我们的Chrome节点。
// Driver.java
protected static RemoteWebDriver browser;
DesiredCapabilities cap = new DesiredCapabilities();
ChromeOptions chromeOptions = new ChromeOptions();
cap.setCapability(ChromeOptions.CAPABILITY, chromeOptions);
cap.setBrowserName("chrome");
driver = new RemoteWebDriver(cap);
然后,您可以使用TestNG库像往常一样在多个节点上并行运行测试。
值得注意的是,可以在每个节点上启动多个浏览器。但是,不建议这样做,每个节点使用一个浏览器被认为是获得最佳性能的最佳实践。
其他提示和技巧
如果您想查看浏览器中发生的事情以便调试测试,那么值得使用一个加载浏览器节点的文件
debug
版本。它们包含一个VNC服务器,因此您可以在测试运行时监视浏览器。
也可以无头运行浏览器以提高速度(通常的方式),Selenium还提供映像版本,因此如果需要安装其他软件,则可以创建自己的映像。
您还可以将Grid部署到Kubernetes或Swarm,以为CI管道创建稳定的Grid版本。这样可以确保在发生故障时快速恢复或更换docker。docker-compose.yml
debug
base
阅读更多:
- Selenium: 1 — 2
- Selenium: 3 — 5