测试工程师技巧#1:将Selenium网格化

再一次问好。在Java QA Engineer课程开始之前,我们已经为您翻译了一份有用的注释










每年来自世界各地的测试自动化工程师都研究最新的工具和技术,以使其测试自动化环境更加稳定,更快,更易于使用和维护。这对于确保公司的框架在任何时候都大规模实施至关重要。无论哪种方式,过时的过时框架都会很快过时。



众所周知,Selenium Grid在CI管道中难以设置,不稳定并且难以部署和/或版本控制。一种简单,稳定和方便的方法是使用预构建的Selenium Docker映像。



注意:此方法的唯一缺点是IE(Internet Explorer)不支持此方法,因为当前无法将Windows操作系统放入容器中。


准备工作



首先,您需要先在计算机上安装DockerDocker 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文件的更多信息,请参阅官方文档



要启动网格,只需使用任何终端(PowerShellcmd在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.ymldebug



base











阅读更多:








All Articles