2

在Jenkins構建完成後通過調用rake任務觸發黃瓜測試時,我無法啓動CI服務器上的瀏覽器(本例中爲Linux上的本地主機)。 Jenkins控制檯日誌如下。我非常確定一切正常,因爲我可以通過命令行在服務器上成功運行它。無法從Jenkins CI啓動瀏覽器

01:26:43 [cucumber] $ /usr/local/rvm/scripts/gems/ruby-2.3.0/bin/rake schedule_win_job:features --trace 

01:26:43 ** Invoke schedule_win_job:features (first_time) 

01:26:43 ** Execute schedule_win_job:features 

01:26:43 /usr/local/rvm/scripts/rubies/ruby-2.3.0/bin/ruby -S bundle exec cucumber --tag @schedule_job --profile dev 

**01:27:45 unable to obtain stable firefox connection in 60 seconds (127.0.0.1:7055) (Selenium::WebDriver::Error::WebDriverError)** 

01:27:45 /usr/local/rvm/scripts/gems/ruby-2.3.0/gems/selenium-webdriver-2.53.0/lib/selenium/webdriver/firefox/launcher.rb:90:in `connect_until_stable' 

01:27:45 /usr/local/rvm/scripts/gems/ruby-2.3.0/gems/selenium-webdriver-2.53.0/lib/selenium/webdriver/firefox/launcher.rb:55:in `block in launch' 

01:27:45 /usr/local/rvm/scripts/gems/ruby-2.3.0/gems/selenium-webdriver-2.53.0/lib/selenium/webdriver/common/socket_lock.rb:43:in `locked' 

01:27:45 /usr/local/rvm/scripts/gems/ruby-2.3.0/gems/selenium-webdriver-2.53.0/lib/selenium/webdriver/firefox/launcher.rb:51:in `launch' 

01:27:45 /usr/local/rvm/scripts/gems/ruby-2.3.0/gems/selenium-webdriver-2.53.0/lib/selenium/webdriver/firefox/bridge.rb:43:in `initialize' 

01:27:45 /usr/local/rvm/scripts/gems/ruby-2.3.0/gems/selenium-webdriver-2.53.0/lib/selenium/webdriver/common/driver.rb:53:in `new' 

01:27:45 /usr/local/rvm/scripts/gems/ruby-2.3.0/gems/selenium-webdriver-2.53.0/lib/selenium/webdriver/common/driver.rb:53:in `for' 

01:27:45 /usr/local/rvm/scripts/gems/ruby-2.3.0/gems/selenium-webdriver-2.53.0/lib/selenium/webdriver.rb:84:in `for' 

01:27:45 /usr/local/rvm/scripts/gems/ruby-2.3.0/gems/watir-webdriver-0.9.1/lib/watir-webdriver/browser.rb:46:in `initialize' 
+0

相同的答案:http://stackoverflow.com/questions/36917134/unable-to-run-automation-on-firefox-jenkins從今天早些時候 - 確保你有你的路徑上的Firefox 45。 – titusfortner

+0

對不起,我已通過檢查並滿足您提及的所有要求,但問題仍然存在。如果我將瀏覽器更改爲Chrome瀏覽器,則會遇到此處報告的新問題[StackOverflow question](http://stackoverflow.com/questions/22558077/unknown-error-chrome-failed-to-start-exited-abnormally-driver- info-chromedri),那裏的解決方案也不適合我。 –

+0

順便說一句,下面是我得到的錯誤消息,如果我嘗試通過Jenkins使用裸shell命令啓動firefox。 '[20:38:21]/usr/bin/firefox [20:38:21]錯誤:GDK_BACKEND與可用顯示不匹配# –

回答

0

事實證明,Jenkins用戶的帳戶性質不允許它在Jenkins服務器中運行GUI測試。

Firefox是一個GUI應用程序,它需要連接到X服務器以發送其命令來繪製窗口等。通常Jenkins設置爲作爲後臺系統守護進程運行,後臺進程無法訪問任何X服務器會話。

這是在使用shell命令/ usr/bin/firefox嘗試在Jenkins版本中啓動firefox時出現以下錯誤的原因。

No protocol specified

XDG_RUNTIME_DIR not set in the environment

Error: cannot open display: :0

因此,一個可能的解決方案將是使用pkexec命令觸發與根特權測試(它可能是能夠將詹金斯用戶添加到sudo組使得它可以成功運行這些命令,但是由於安全問題而不推薦,並且我試過它不起作用)。

要實現全自動化,需要其他一些設置,例如pkexec。禁用身份驗證提示。一旦我準備好逐步解決方案後,我會更新更詳細的答案。

+0

當然,我們可以使用[Xvnc插件](https://wiki.jenkins-ci.org/display/JENKINS/Xvnc+Plugin),這是很容易的,如[記錄] [http:// stackoverflow .COM /問題/ 27060519 /無法對運行中的firefox-通詹金斯)。 –

0

別人也有類似的問題和解決方案看上去要確保你有水豚的和穩定的版本,最新的硒的webdriver

unable to obtain stable firefox connection in 60 seconds (127.0.0.1:7055)

讓我知道如果這個解決方案幫助!

+0

謝謝您的回答。雖然那裏的解決方案沒有幫助,但他們提供了一些提示,讓我更加接近根本原因。安裝Jenkins服務器後,有一個名爲jenkins的服務帳戶被創建。看起來這個帳戶沒有打開顯示的權限。我會再次搜索以獲得最終解決方案並將其發佈到此處。 –