如何在无显示器的ubuntu下跑前端测试

Selenium是一个web自动化测试框架。用它可以实现web应用自动化测试。不过,我不只是用它来做测试,我还用它从电子商务网站签到页面爬取javascript生成的或AJAX的内容。

作为程序员,我不满足于使用Selenium IDE来记录和重放宏记录。那样很蹩脚,而且不适合部署到多台服务器。这时,你需要Selenium WebDriver,它又灵活,而且通过Selenium headless,运行Selenium在服务器上不需要显示设备。

为什么要运行Headless Selenium 测试?

当你希望能在服务器上运行的健壮的自动化操作,而其操作又依赖于 27X7,同时还希望它是稳定的,这时,Selenium是你唯一的选择。但是,Selenium需要运行在浏览器上。所以,你得骗Selenium,让它觉得,它正跑在一台带有显示器的机器上。这样,你就可以不间断的跑自动化测试,同时又不失稳定性和扩展性。

如何在ubuntu上运行Selenium headless

本教程的目标是在使用Mozilla Firefox作为主浏览器的ubuntu上配置和运行selenium headless。

安装Firefox headless

确认你的ubuntu安装的是最新版本的Firefox。我遇到过Selenium的版本和Firefox的版本不兼容问题。如果你没有安装Firefox或者使用的是老版本的Firefox,可按以下步骤升级Firefox:

  • 在/etc/apt/sources.list加入:

ppa:mozillateam/firefox-stable

  • 运行以下命令升级或安装Firefox

sudo apt-get update sudo apt-get install firefox

运行成功后,ubuntu上就应该安装好最新版本的Firefox了。

安装Xvfb——一个X虚拟框架

这个仿真框架使用虚拟内存能让X-Server运行在没有显示设备的机器上。这样,浏览器就可以运行了。在ubuntu和Debian上安装xvfb,只要运行:

 sudo apt-get install xvfb

现在,可以运行xvfb服务上一个带有数字的显示设备上,这样是为了防止你在下阶段添加设备时引发冲突。本教程,我们分配一个显示设备 10.

sudo Xvfb :10 -ac

-ac代表关闭xvfb的访问控制。好了,服务器可以运行了。

启动浏览器

在你运行浏览器前,你首先要设置DISPLAY环境变量,以指定xvfb运行在哪个显示设备上。在加入环境变量前,我们检查一下所有的这些都如我们所料:

** export DISPLAY=:10
firefox**
如果终端(terminal)没有显示错误,就说明你已经成功运行Firefox在无显示设备的ubuntu上了。它会一直运行,直到你使用ctrl + C或其它类似方法来终止其运行。同时,它不会有任何输出。

如果你能成功运行以上的步骤,那么接下来的部分就是轻而易举了。现在,我们可以在ubuntu服务器上运行selenium,如同你在本地运行一样。本教程的下一部分,我展示了如何运行一个独立selenium服务器,同时使用PHP的selenium webdriver去连接。

小结

很久以前,我也使用selenium做自动化的集成测试,使用HtmlUnit的webdriver,所以不需要显示器。但是HtmlUnit的表现总是有些不如意。而最近在项目中发现这篇文章,解决我长久以来的问题:在没有显示器的服务器上运行Firefox的集成测试。

时间: 2024-11-03 03:27:48

如何在无显示器的ubuntu下跑前端测试的相关文章

ubuntu下无法打开USB串口

问题描述 ubuntu下无法打开USB串口 有个串口的问题想请教各位一下. 问题背景:在ubuntu下跑识别apriltags程序,将处理后的信息用串口发出去. 出现问题:串口无法打开. 我已经做出的尝试: 1.最开始我用那台座机成功过一次.可以在电脑端用minicom串口调试助手,自发自收数据. 2.后来又修改了一些串口发送的通信程序,再去实验就不好用了. 3.接着去网上各种百度论坛答案,尝试着给串口安装pl2303驱动,发现并不好用. 当串口第一次插上电脑时,我用dmesg | grep t

《循序渐进学Docker》——第3章 Ubuntu下使用Docker 3.1 Docker的运行平台

第3章 Ubuntu下使用Docker 第2章我们介绍了在Windows下如何搭建一个Docker运行环境.这一章我们要切换环境,在Ubuntu系统下使用Docker.为什么要切换到Ubuntu下呢,还要从Docker的运行平台说起. 3.1 Docker的运行平台 首先,我们需要知道Docker可以在哪些操作系统下运行.截止到2016年3月底,几乎所有的Linux系统(如Red Hat Enterprise Linux(RHEL)/Centos.Debian/Ubuntu.gentoo.arc

ubuntu下matlab上跑图像代码时出现错误

问题描述 ubuntu下matlab上跑图像代码时出现错误 错误如下: 贴上相关代码: 希望各位费心帮忙看看 解决方案 我觉得把输入矩阵,使用稀疏表示函数,转为稀疏矩阵就好了 解决方案二: http://blog.chinaunix.net/uid-21222282-id-1829245.html 试试这个函数,处理你的输入矩阵

ubuntu 系统下跑图像处理的程序时进行编译出现错误

问题描述 ubuntu 系统下跑图像处理的程序时进行编译出现错误 进行make matlab -j 4 编译时出现以下错误 不知道是哪里出了错误,望各位指点 解决方案 头文件没有包含正确,需要把你用到的头文件等包含进去编译 解决方案二: 查找一下出错信息中未定义的数据类型/变量是在哪个 .h 文件中定义的,包含它吧. 解决方案三: 头文件的路径对不对,实在不行先用绝对路径或相对路径包含试试.

ubuntu系统下跑图像处理的代码,编译时出现错误

问题描述 ubuntu系统下跑图像处理的代码,编译时出现错误 编译时出现以下错误 不知道什么原因造成的,望各位给解释解释 解决方案 头文件没有找到,路径包含正确吗 解决方案二: 一般都是头文件的饿问题吧

camera+-ubuntu下qtcreator工程中利用opencv编写工程,摄像头无法第二次打开

问题描述 ubuntu下qtcreator工程中利用opencv编写工程,摄像头无法第二次打开 ubuntu下qtcreator工程中利用opencv编写工程,opencv库操作,摄像头第一次可以正常使用,一旦点击停止键后,无法第二次打开,再次运行时就会报错.libv4l2: error turning on stream: Invalid argument cap 在析构函数中我有作释放.请问这是什么原因啊?? ---------------- VideoCapture cap; cap.op

Ubuntu下安装 编译项目

在Ubuntu下安装GCC和其他一些Linux系统有点不一样.   方法一: sudo apt-get build-depgcc   方法二: sudo apt-get install build-essential   安装完了可以执行   gcc--version   命令来查看版本.     编译则使用gcc命令.要往下学习首先就得熟悉gcc命令的用法.   gcc命令提供了非常多的命令选项,但并不是所有都要熟悉,初学时掌握几个常用的就可以了,到后面再慢慢学习其它选项,免得因选项太多而打击

Ubuntu下的三个好用的CD/DVD刻录工具

大约一周前,我的朋友向我寻求一些帮助,是关于在Ubuntu下有哪些好用的CD/DVD刻录软件.此人本是windows的用户,但是由于他使用的Windows软件花费太多了,超出他的承受能力,因此他开始计划尝试使用Linux系统了.为什么不用那些免费的软件来把你喜欢的电影和音乐刻录到光盘里呢?其实windows操作系统中也有免费的替代产品,但是既然我的朋友正在走向Linux世界,让我们给他一些信息,介绍三个可以在Ubuntu Linux系统下使用的免费CD/DVD刻录工具吧. Brasero Dis

Ubuntu下LAMP环境配置教程(linux)_Linux

据说搞好LAMP也就是Linux+Apache+Mysql+php就已经相当于一个中级php程序猿的水平,当然你的php要得会才行,之后就是搞好各种框架.其实这东西,并不神秘,非常简单.甚至比Windows还简单,各种变量都自动帮你搞好了.你的畏惧主要来自于你的无知. 建议先通过phpnow1.5.6在Windows一键搭好php环境,然后通过Mysql_Gui_Tools图形化Mysql,把php工程写好,把php工程.Mysql数据库导入导出到Linux上面跑,Linux纯属就是跑工程,不做