在Docker容器中运行seleniumtesting
我想从我的JavaScript项目的来源build立一个docker图像。 我用摩卡框架写了一些testing。 testing应该在构builddocker构build过程中运行,因为我想用Jenkins自动化构build。
testing应该使用Firefox webdriver。 我在Docker镜像中安装了Xvfb,为Firefox进程提供虚拟显示。
但是每次运行构build时,所有的testing都失败了,我得到如下的错误信息:
Uncaught WebDriverError: Unable to parse new session response: {"error":"unknown error","message":"connection refused"} at WebDriverError (node_modules/selenium-webdriver/lib/error.js:27:5) at client_.send.then.response (node_modules/selenium-webdriver/http/index.js:477:17) at ManagedPromise.invokeCallback_ (node_modules/selenium-webdriver/lib/promise.js:1379:14) at TaskQueue.execute_ (node_modules/selenium-webdriver/lib/promise.js:2913:14) at TaskQueue.executeNext_ (node_modules/selenium-webdriver/lib/promise.js:2896:21) at asyncRun (node_modules/selenium-webdriver/lib/promise.js:2820:25) at node_modules/selenium-webdriver/lib/promise.js:639:7 at process._tickDomainCallback (internal/process/next_tick.js:129:7) From: Task: WebDriver.createSession() at Function.createSession (node_modules/selenium-webdriver/lib/webdriver.js:329:24) at Driver (node_modules/selenium-webdriver/firefox/index.js:386:38) at Builder.build (node_modules/selenium-webdriver/builder.js:467:16) at Object.<anonymous> (test/e2e/driver.js:10:69) ...
当我在我的本地机器上的Docker容器之外运行testing时,一切正常。
我用以下命令初始化webdriver:
var webdriver = require('selenium-webdriver'); var capabilities = webdriver.Capabilities.firefox(); capabilities.set('marionette', true); var driver = new webdriver.Builder().withCapabilities(capabilities).build();
是否有任何有关如何在docker集装箱内无头执行selenium检测的最佳实践?
我通过运行启动selenium独立服务器的gulp任务和xvfb-run的testing来解决这个问题:
CMD xvfb-run ./node_modules/gulp/bin/gulp.js test