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版本。