0

我在Linux服務器上運行一些Selenium GUI測試(無頭),瀏覽器是Firefox。紅帽企業Linux服務器版本5.9(Tikanga)安裝Firefox舊版本 - Linux機器 - 硒測試失敗的Firefox版本

我使用yum安裝了FireFox版本,並在Selenium測試失敗時收到錯誤消息。 Firefox通過yum安裝的版本是:17.0.9版本。

錯誤消息如下。看起來像我們在許多項目中使用的Selenium webdriver/java/jar版本(2.39.0)對Firefox有依賴性,它與Firefox的更高版本> 26不兼容。因此,如果我可以以某種方式安裝Firefox版本26或24 - 26之間,我的測試將會奏效。 Selenium-java 2.39.0版本支持upto FIREFOX瀏覽器26,看起來好像安裝的「yum」版本太低了。

問題:

  1. 從哪裏可以下載Firefox版本26
  2. 我如何安裝Firefox版26使用「蔭」命令
  3. 我怎樣才能刪除現有的最新版本的Firefox從我的Linux機器。

錯誤消息亮點:

無法連接到二進制FirefoxBinary(在/ usr /斌/ Firefox)的上端口 OR
所致:org.openqa.selenium。 firefox.NotConnectedException:無法連接到主機127.0.0.1

完整的錯誤消息:

Failed to connect to binary FirefoxBinary(/usr/bin/firefox) on port 7055; process output follows: Error: no display specified Error: no display specified Build info: version: '2.39.0', revision: '14fa800511cc5d66d426e08b0b2ab926c7ed7398', time: '2013-12-16 13:18:38' System info: host: 'linuxdevserver12', ip: '10.112.6.211', os.name: 'Linux', os.arch: 'amd64', os.version: '2.6.18-348.16.1.el5', java.version: '1.7.0_40' Driver info: driver.version: FirefoxDriver 

org.openqa.selenium.WebDriverException: Failed to connect to binary FirefoxBinary(/usr/bin/firefox) on port 7055; process output follows: 
Error: no display specified 
Error: no display specified 

Build info: version: '2.39.0', revision: '14fa800511cc5d66d426e08b0b2ab926c7ed7398', time: '2013-12-16 13:18:38' 
System info: host: 'linuxdevserver12', ip: '10.112.6.211', os.name: 'Linux', os.arch: 'amd64', os.version: '2.6.18-348.16.1.el5', java.version: '1.7.0_40' 
Driver info: driver.version: FirefoxDriver 
at org.openqa.selenium.firefox.internal.NewProfileExtensionConnection.start(NewProfileExtensionConnection.java:130) 
at org.openqa.selenium.firefox.FirefoxDriver.startClient(FirefoxDriver.java:250) 
at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:110) 
at org.openqa.selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.java:195) 
at org.openqa.selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.java:190) 
at org.openqa.selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.java:186) 
at org.openqa.selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.java:99) 
at com.thc.ids.application.seleniumcommon.SCBaseTest.setupSimpleBrowser(SCBaseTest.java:1045) 
at com.thc.ids.application.seleniumcommon.SCBaseTest.access$100(SCBaseTest.java:54) 
at com.thc.ids.application.seleniumcommon.SCBaseTest$1.setUp(SCBaseTest.java:219) 
at junit.extensions.TestSetup$1.protect(TestSetup.java:22) 
at junit.extensions.TestSetup.run(TestSetup.java:27) 
at groovy.util.AntBuilder.performTask(AntBuilder.java:260) 
at groovy.util.AntBuilder.nodeCompleted(AntBuilder.java:220) 
at org.gradle.api.internal.project.ant.BasicAntBuilder.nodeCompleted(BasicAntBuilder.java:71) 
at groovy.util.BuilderSupport.doInvokeMethod(BuilderSupport.java:147) 
at groovy.util.AntBuilder.doInvokeMethod(AntBuilder.java:170) 
at org.gradle.api.internal.project.ant.BasicAntBuilder.doInvokeMethod(BasicAntBuilder.java:86) 
at groovy.util.BuilderSupport.invokeMethod(BuilderSupport.java:64) 
at org.gradle.api.internal.project.DefaultAntBuilder.super$3$invokeMethod(DefaultAntBuilder.groovy) 
at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:90) 
at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:233) 
at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1047) 
at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.invokeMethodOnSuperN(ScriptBytecodeAdapter.java:128) 
at org.gradle.api.internal.project.DefaultAntBuilder.invokeMethod(DefaultAntBuilder.groovy:37) 
at org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.call(PogoMetaClassSite.java:45) 
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:42) 
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:108) 
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:120) 
at com.thc.ids.gradle.ThidsTestSeleniumTask.performTest(ThidsTestSeleniumTask.groovy:52) 
at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:90) 
at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:233) 
at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1047) 
at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:877) 
at org.gradle.api.internal.BeanDynamicObject$MetaClassAdapter.invokeMethod(BeanDynamicObject.java:216) 
at org.gradle.api.internal.BeanDynamicObject.invokeMethod(BeanDynamicObject.java:122) 
at org.gradle.api.internal.CompositeDynamicObject.invokeMethod(CompositeDynamicObject.java:147) 
at com.thc.ids.gradle.ThidsTestSeleniumTask_Decorated.invokeMethod(Unknown Source) 
at groovy.lang.GroovyObject$invokeMethod.call(Unknown Source) 
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:42) 
at groovy.lang.GroovyObject$invokeMethod.call(Unknown Source) 
at org.gradle.util.ReflectionUtil.invoke(ReflectionUtil.groovy:23) 
at org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory$StandardTaskAction.doExecute(AnnotationProcessingTaskFactory.java:217) 
at org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory$StandardTaskAction.execute(AnnotationProcessingTaskFactory.java:210) 
at org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory$StandardTaskAction.execute(AnnotationProcessingTaskFactory.java:199) 
at org.gradle.api.internal.AbstractTask$TaskActionWrapper.execute(AbstractTask.java:526) 
at org.gradle.api.internal.AbstractTask$TaskActionWrapper.execute(AbstractTask.java:509) 
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeAction(ExecuteActionsTaskExecuter.java:80) 
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:61) 
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:46) 
at org.gradle.api.internal.tasks.execution.PostExecutionAnalysisTaskExecuter.execute(PostExecutionAnalysisTaskExecuter.java:35) 
at org.gradle.api.internal.changedetection.state.CacheLockReleasingTaskExecuter$1.run(CacheLockReleasingTaskExecuter.java:35) 
at org.gradle.internal.Factories$1.create(Factories.java:22) 
at org.gradle.cache.internal.DefaultCacheAccess.longRunningOperation(DefaultCacheAccess.java:179) 
at org.gradle.cache.internal.DefaultCacheAccess.longRunningOperation(DefaultCacheAccess.java:232) 
at org.gradle.cache.internal.DefaultPersistentDirectoryStore.longRunningOperation(DefaultPersistentDirectoryStore.java:142) 
at org.gradle.api.internal.changedetection.state.DefaultTaskArtifactStateCacheAccess.longRunningOperation(DefaultTaskArtifactStateCacheAccess.java:83) 
at org.gradle.api.internal.changedetection.state.CacheLockReleasingTaskExecuter.execute(CacheLockReleasingTaskExecuter.java:33) 
at org.gradle.api.internal.tasks.execution.SkipUpToDateTaskExecuter.execute(SkipUpToDateTaskExecuter.java:58) 
at org.gradle.api.internal.tasks.execution.ContextualisingTaskExecuter.execute(ContextualisingTaskExecuter.java:34) 
at org.gradle.api.internal.changedetection.state.CacheLockAcquiringTaskExecuter$1.run(CacheLockAcquiringTaskExecuter.java:39) 
at org.gradle.internal.Factories$1.create(Factories.java:22) 
at org.gradle.cache.internal.DefaultCacheAccess.useCache(DefaultCacheAccess.java:124) 
at org.gradle.cache.internal.DefaultCacheAccess.useCache(DefaultCacheAccess.java:112) 
at org.gradle.cache.internal.DefaultPersistentDirectoryStore.useCache(DefaultPersistentDirectoryStore.java:134) 
at org.gradle.api.internal.changedetection.state.DefaultTaskArtifactStateCacheAccess.useCache(DefaultTaskArtifactStateCacheAccess.java:79) 
at org.gradle.api.internal.changedetection.state.CacheLockAcquiringTaskExecuter.execute(CacheLockAcquiringTaskExecuter.java:37) 
at org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.java:57) 
at org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.java:41) 
at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:51) 
at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:52) 
at org.gradle.api.internal.tasks.execution.ExecuteAtMostOnceTaskExecuter.execute(ExecuteAtMostOnceTaskExecuter.java:42) 
at org.gradle.api.internal.AbstractTask.executeWithoutThrowingTaskFailure(AbstractTask.java:282) 
at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor.executeTask(DefaultTaskPlanExecutor.java:48) 
at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor.processTask(DefaultTaskPlanExecutor.java:34) 
at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor.process(DefaultTaskPlanExecutor.java:27) 
at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter.execute(DefaultTaskGraphExecuter.java:89) 
at org.gradle.execution.SelectedTaskExecutionAction.execute(SelectedTaskExecutionAction.java:29) 
at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:61) 
at org.gradle.execution.DefaultBuildExecuter.access$200(DefaultBuildExecuter.java:23) 
at org.gradle.execution.DefaultBuildExecuter$2.proceed(DefaultBuildExecuter.java:67) 
at org.gradle.api.internal.changedetection.state.TaskCacheLockHandlingBuildExecuter$1.run(TaskCacheLockHandlingBuildExecuter.java:31) 
at org.gradle.internal.Factories$1.create(Factories.java:22) 
at org.gradle.cache.internal.DefaultCacheAccess.useCache(DefaultCacheAccess.java:124) 
at org.gradle.cache.internal.DefaultCacheAccess.useCache(DefaultCacheAccess.java:112) 
at org.gradle.cache.internal.DefaultPersistentDirectoryStore.useCache(DefaultPersistentDirectoryStore.java:134) 
at org.gradle.api.internal.changedetection.state.DefaultTaskArtifactStateCacheAccess.useCache(DefaultTaskArtifactStateCacheAccess.java:79) 
at org.gradle.api.internal.changedetection.state.TaskCacheLockHandlingBuildExecuter.execute(TaskCacheLockHandlingBuildExecuter.java:29) 
at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:61) 
at org.gradle.execution.DefaultBuildExecuter.access$200(DefaultBuildExecuter.java:23) 
at org.gradle.execution.DefaultBuildExecuter$2.proceed(DefaultBuildExecuter.java:67) 
at org.gradle.execution.DryRunBuildExecutionAction.execute(DryRunBuildExecutionAction.java:32) 
at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:61) 
at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:54) 
at org.gradle.initialization.DefaultGradleLauncher.doBuildStages(DefaultGradleLauncher.java:166) 
at org.gradle.initialization.DefaultGradleLauncher.doBuild(DefaultGradleLauncher.java:113) 
at org.gradle.initialization.DefaultGradleLauncher.run(DefaultGradleLauncher.java:81) 
at org.gradle.launcher.exec.InProcessBuildActionExecuter$DefaultBuildController.run(InProcessBuildActionExecuter.java:64) 
at org.gradle.launcher.cli.ExecuteBuildAction.run(ExecuteBuildAction.java:33) 
at org.gradle.launcher.cli.ExecuteBuildAction.run(ExecuteBuildAction.java:24) 
at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:35) 
at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:26) 
at org.gradle.launcher.cli.RunBuildAction.run(RunBuildAction.java:50) 
at org.gradle.api.internal.Actions$RunnableActionAdapter.execute(Actions.java:171) 
at org.gradle.launcher.cli.CommandLineActionFactory$ParseAndBuildAction.execute(CommandLineActionFactory.java:201) 
at org.gradle.launcher.cli.CommandLineActionFactory$ParseAndBuildAction.execute(CommandLineActionFactory.java:174) 
at org.gradle.launcher.cli.CommandLineActionFactory$WithLogging.execute(CommandLineActionFactory.java:170) 
at org.gradle.launcher.cli.CommandLineActionFactory$WithLogging.execute(CommandLineActionFactory.java:139) 
at org.gradle.launcher.cli.ExceptionReportingAction.execute(ExceptionReportingAction.java:33) 
at org.gradle.launcher.cli.ExceptionReportingAction.execute(ExceptionReportingAction.java:22) 
at org.gradle.launcher.Main.doAction(Main.java:48) 
at org.gradle.launcher.bootstrap.EntryPoint.run(EntryPoint.java:45) 
at org.gradle.launcher.Main.main(Main.java:39) 
at org.gradle.launcher.bootstrap.ProcessBootstrap.runNoExit(ProcessBootstrap.java:50) 
at org.gradle.launcher.bootstrap.ProcessBootstrap.run(ProcessBootstrap.java:32) 
at org.gradle.launcher.GradleMain.main(GradleMain.java:26) 

Caused by: org.openqa.selenium.firefox.NotConnectedException: Unable to connect to host 127.0.0.1 on port 7055 after 45000 ms. Firefox console output: 
Error: no display specified 
Error: no display specified 

at org.openqa.selenium.firefox.internal.NewProfileExtensionConnection.start(NewProfileExtensionConnection.java:118) 

回答

0

答案:

  1. https://ftp.mozilla.org/pub/mozilla.org/firefox/releases/26.0/linux-x86_64/en-US/ (發佈後,指定XX.X版本,操作系統類型/位類型和語言),你會發現 .tar.bz2格式格式包。後

,但 焦油-xvf且該版本的Firefox作爲/生產/火狐文件夾,當我跑步時:./firefox -version,我得到一個錯誤。 ENV變量LD_LIBRARY_PATH設置爲:/生產/ Firefox中:/ usr/lib中:在/ usr/local/lib目錄

XPCOMGlueLoad error for file /production/firefox/libxul.so: 
libgio-2.0.so.0: cannot open shared object file: No such file or directory 
Couldn't load XPCOM. 

另一件事。我設法解決錯誤信息,因爲這是由於沒有顯示。我在Jenkins安裝了「xvfb」插件並啓用了它。現在,我沒有收到沒有顯示錯誤,但不同的。以下錯誤現在至少不會出現。

Failed to connect to binary FirefoxBinary(/usr/bin/firefox) on port 7055; process output follows: Error: no display specified Error: no display specified 

答案2:我不認爲我可以這樣做。我必須使用rpm(這會導致其他安裝問題)。

答3:百勝刪除火狐

這個崗位的整個目的是運行在Linux機器(無頭)上Selenium測試。

要解決這個問題,我所做的只是在Jenkins中安裝「Xvfb」插件。在Jenkins作業(運行測試/調用測試)中配置它。我選中了「Enable Xvfb」,Timeout(5)秒,Log Xvfb。 不要檢查/勾選「讓Xvfb選擇顯示器#」的框,否則會出現以下錯誤。

在詹金斯日誌: 你會看到...而不是調用下面的(有效)命令

Xvfb starting$ Xvfb :3 -screen 0 1024x768x24 -fbdir /production/jenkinsAKS/2014-10-30_13-56-051887436837486829115xvfb 

莫名其妙地當「讓Xvfb來選擇顯示」複選框..被選中,它有時不起作用,並給出如下所示的命令(帶有Xvfb的使用信息)。 PS「-displayfd 2」的說法是不正確:

Xvfb starting$ Xvfb -displayfd 2 -screen 0 1024x768x24 -fbdir /production/jenkinsAKS/2014-10-30_13-56-051887436837486829115xvfb 

所以,取消讓Xvfb來選擇顯示框,你會被罰款(因爲它將使用:SomeNumber的參數,同時呼籲的Xvfb命令)。現在,Selenium GUI測試運行良好,不用擔心現有的17.0.9(由YUM安裝的firefox版本工作正常)的firefox版本。