Linux
通過初始化腳本執行 Selenium RC Headless:無法啟動 Firefox
我正在嘗試使用初始化腳本和守護程序工具啟動 selenium 和無頭 Xvfb X 伺服器。
但是當我使用這種方法啟動我的環境時,Firefox 無法啟動。看起來它找不到 Firefox 2 然後停止。當我正常啟動該環境時,它也找不到 Firefox 2,但隨後它搜尋 Firefox 3,找到並正常啟動。
這是我的初始化腳本:
#!/bin/bash # # Starts a Selenium-RC headless environment # License: https://github.com/amenk/SelfScripts/blob/master/LICENSE.md # # BETA # Fixmes: # - We should take care of running the environment under a non-priviledged user # # Source function library. . /lib/lsb/init-functions LOG=/var/log/selenium.log DISPLAY_NO=99 JAVA=/usr/bin/java XVFB=/usr/bin/Xvfb SELENIUM_JAR=/opt/selenium-server-standalone-2.20.0.jar FIREFOX_TEMPLATE=/home/amenk/.mozilla/firefox/aph73r3f.selenium/ start() { log_daemon_msg "Starting Xvfb" daemon --dbglog=$LOG --errlog=$LOG --stdout=$LOG --stderr=$LOG\ --name Xvfb -- $XVFB :$DISPLAY_NO -ac -screen 0 1024x768x8 log_end_msg $? log_daemon_msg "Starting Selenium RC" daemon --dbglog=$LOG --errlog=$LOG --stdout=$LOG --stderr=$LOG\ --name Selenium-RC --env=DISPLAY=$DISPLAY_NO\ -- java -jar $SELENIUM_JAR -log /var/log/selenium-debug.log -browserSideLog -firefoxProfileTemplate $FIREFOX_TEMPLATE log_end_msg $? return } stop() { log_daemon_msg "Stopping Selenium RC" daemon --stop --name Selenium-RC log_end_msg $? log_daemon_msg "Stopping Xvfb" daemon --stop --name Xvfb log_end_msg $? return } status() { daemon -v10 --running --name Xvfb daemon -v10 --running --name Selenium-RC } case "$1" in start) start ;; stop) stop ;; status) status ;; restart) stop start ;; *) echo "Usage: {start|stop|status|reload|restart[|probe]" exit 1 ;; esac exit $?
啟動整個過程很好,但是當我在該伺服器上執行 selenium 測試時,我在 /var/log/selenium-debug.log 中收到以下消息:
13:21:29.207 調試 [11] org.openqa.selenium.browserlaunchers.locators.BrowserLocator - 發現 Firefox 2... 13:21:29.207 調試 [11] org.openqa.selenium.browserlaunchers.locators.BrowserLocator - 檢查 Firefox 2 啟動器是否位於:'/Applications/Minefield.app/Contents/MacOS/firefox-bin' 是否有效... 13:21:29.207 調試 [11] org.openqa.selenium.browserlaunchers.locators.BrowserLocator - 檢查 Firefox 2 啟動器是否位於:'/Applications/Firefox-2.app/Contents/MacOS/firefox-bin' 有效.. . 13:21:29.207 調試 [11] org.openqa.selenium.browserlaunchers.locators.BrowserLocator - 檢查 Firefox 2 啟動器是否位於:'/Applications/Firefox.app/Contents/MacOS/firefox-bin' 有效... 13:21:29.207 調試 [11] org.openqa.selenium.browserlaunchers.locators.BrowserLocator - 檢查 :'/usr/lib/firefox/firefox-bin' 處的 Firefox 2 啟動器是否有效... 13:21:29.209 INFO [11] org.openqa.selenium.server.SeleniumDriverResourceHandler - 得到結果:無法啟動新的瀏覽器會話:會話 null 上的 java.lang.NullPointerException
當我在同一個使用者下使用相同的參數執行 selenium 和 xvfb 時,我得到
... 13:31:16.413 調試 [11] org.openqa.selenium.browserlaunchers.locators.BrowserLocator - 檢查位於:'/usr/lib/firefox/firefox-bin' 的 Firefox 2 啟動器是否有效... 13:31:16.414 調試 [11] org.openqa.selenium.browserlaunchers.locators.CombinedFirefoxLocator - 沒有找到 Firefox 2,現在發現 Firefox 3... 13:31:16.415 調試 [11] org.openqa.selenium.browserlaunchers.locators.BrowserLocator - 發現 Firefox 3... 13:31:16.433 調試 [11] org.openqa.selenium.browserlaunchers.locators.BrowserLocator - 檢查 Firefox 3 啟動器是否在:'/usr/lib/firefox-addons/firefox-bin' 有效... 13:31:16.434 調試 [11] org.openqa.selenium.browserlaunchers.locators.BrowserLocator - 檢查位於:'/usr/lib/firefox-addons/firefox' 的 Firefox 3 啟動器是否有效... 13:31:16.434 調試 [11] org.openqa.selenium.browserlaunchers.locators.BrowserLocator - 檢查位於:'/usr/lib/firefox-11.0/firefox-bin' 的 Firefox 3 啟動器是否有效... 13:31:16.434 調試 [11] org.openqa.selenium.browserlaunchers.locators.BrowserLocator - 檢查位於:'/usr/lib/firefox-11.0/firefox' 的 Firefox 3 啟動器是否有效... 13:31:16.434 調試 [11] org.openqa.selenium.browserlaunchers.locators.BrowserLocator - 發現有效的 Firefox 3 啟動器:'/usr/lib/firefox-11.0/firefox' 13:31:16.435 INFO [11] org.openqa.selenium.server.BrowserSessionFactory - 為 http://example.com/foo/bar/ 分配的會話 cb49662833c84b6cb62fcd5a4a7e9f61,啟動...
問題是守護程序內部的環境正在執行。
--env
清除了環境變數。你可以很容易地看到這個daemon -O /tmp/export --env="FOO=BAR" -- bash -c export cat /tmp/export
解決方案是從
daemon
“-i”開關開始複製路徑設置。使用此更改,將找到 Firefox。該腳本的工作版本可在 GitHub 上獲得。
如上面的評論所述,當作為守護程序執行時,您的環境看起來會有所不同 :)