使用xvfb实现无需GUI的web UI自动化测试

假设我们使用selenium已经写好了web ui的自动化测试。 如果我们希望case跑在linux无desktop界面的服务器上,我们应该如何实现呢?

(假设您的自动化case在有desktop的gui的操作系统运行过没有问题)。

1. 在需要跑的服务器上重新配置webdriver , selenium所需要的环境。  例如作者这里使用了robotframework 框架, python解析器。 所以提前需要将所需要的库等一并全部安装成功。  (此处省略1万字, 安装所有的东西是一个比较漫长的过程,你可以边做些其他事情边玩着边装环境)

2. 安装xvfb。 sudo yum install -y xorg-x11-server-Xvfb (笔者使用centos)

3. 安装成功后,使用如下命令进行测试。

备注: 使用-screen 设定分辨率。 默认的分辨率非常小大概是800*600的样子。

xvfb-run -a –server-args=”-screen 0 1024x768x24″ /usr/local/bin/pybot –pythonpath ../verify_ui/libs/ ../verify_ui/verify_system_tests/auth_tests.robot

4. 全程无浏览器弹出,通过测试用例中的截到的图可以看到,测试正常执行了。

更多xvfb 的链接和文章。 

xvfb是一个运行于内存的显示器系统。

Xvfb (short for X virtual framebuffer) is an in-memory display server for UNIX-like operating system (e.g., Linux). It enables you to run graphical applications without a display (e.g., browser tests on a CI server) while also having the ability to take screenshots.

http://elementalselenium.com/tips/38-headless

备注:

chrome selenium2 自动化, 除了安装chrome浏览器外,需要单独安装chromedriver, chromedriver只要设定在path当中即可。 https://sites.google.com/a/chromium.org/chromedriver/

除了设定在path中外,也可以通过代码中进行指定。

1. include the ChromeDriver location in your PATH environment variable

2. (Java only) specify its location via the webdriver.chrome.driver system property (see sample below)

System.setProperty("webdriver.chrome.driver", "/path/to/chromedriver");

3. (Python only) include the path to ChromeDriver when instantiating webdriver.Chrome (see sample below)

driver = webdriver.Chrome('/path/to/chromedriver')  # Optional argument, 
#if not specified will search path.

 

其他问题: 因为无GUI,所以debug的时候可能会浪费时间,只能通过截图和case的结果来分析判断。  例如linux中安装的字符集问题, 发现firefox打开的网站凡是中文都是乱码(大方块), 这些都需要时间去修复,以便之后自动化测试时定位到底是测试环境的问题还是Bug!

此篇文章已被阅读4724 次

One Comment

Add a Comment

邮箱地址不会被公开。 必填项已用*标注