使用Amazon linux在ec2实例中的无头浏览器上运行自动化

时间:2017-10-02 23:13:11

标签: amazon-web-services selenium amazon-ec2 webautomation

我有一个自动化框架,在其项目目录中使用静态html页面来执行某些aws操作,例如dynamoDB扫描和Aws Lambda执行。由于测试的依赖api组件存在一些性能瓶颈,我们尝试将框架移动到使用Amazon linux的ec2实例并从那里运行测试。

由于我们在TestNG类中有方法实际上使用selenium web驱动程序来启动浏览器并打开静态页面以执行所需的Aws操作,我很确定这个测试会遇到问题。 / p>

我认为有两种可能的方法可以解决这个问题:

  1. 实施AWSUtil类并使用必要的aws客户端来替换Web依赖逻辑(需要一些努力和重新设计)
  2. 使用无头Chrome浏览器(或任何兼容的浏览器)以运行与Web相关的步骤。
  3. 我非常确定1号可以轻松实现,只需时间和精力。但是,很想知道是否有一种简单的方法来完成#2,因为这不需要任何代码重写。

2 个答案:

答案 0 :(得分:0)

我们遇到了同样的问题并且在木偶戏上取得了成功,

https://github.com/GoogleChrome/puppeteer

如果您不想安装最新版本的节点,可以将测试停靠。

puppeteer可以无头或使用浏览器。

希望它有所帮助。

答案 1 :(得分:0)

无需更改测试中的任何内容,只需更改设置和执行。测试可以在Continuous Integration(CI)服务器上无头地运行。由于没有显示输出供浏览器启动,因此没有开箱即用的设置。但是使用Xvfb,您可以虚拟启动浏览器。直接来自文档:

  

Xvfb(X虚拟帧缓冲区的简称)是类UNIX操作系统(例如Linux)的内存显示服务器。它使您无需显示即可运行图形应用程序

根据您是否希望Xvfb在后台运行直到进程被终止,有两种选择:

Xvfb :99 &
export DISPLAY=:99
run-your-tests-here

xvfb-run run-your-tests-here

这是Linux tutorial。我正在使用这个基于Docker的Jenkins设置,每次都像魅力一样。