如何在無顯示器的ubuntu下跑前端測試

翟志軍發表於2014-07-27

翻譯自:http://www.installationpage.com/selenium/how-to-run-selenium-headless-firefox-in-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的整合測試。

而本文,我更多嘗試的是意譯。有不對的地方,謝謝斧正!

相關文章