Ubuntu 在docker容器中使用Xvfb和firefox无头运行mocha测试时出错

Ubuntu 在docker容器中使用Xvfb和firefox无头运行mocha测试时出错,ubuntu,firefox,docker,headless,xvfb,Ubuntu,Firefox,Docker,Headless,Xvfb,我目前在一个运行ubuntu映像的docker容器中工作 以下是我用来安装Xvfb、firefox和Nodejs的一系列命令: apt-get update apt-get install -y xorg xvfb firefox dbus-x11 xfonts-100dpi xfonts-75dpi xfonts-cyrillic apt-get install -y python gcc make g++ wget wget https://nodejs.org/download/rc

我目前在一个运行ubuntu映像的docker容器中工作

以下是我用来安装Xvfb、firefox和Nodejs的一系列命令:

apt-get update

apt-get install -y xorg xvfb firefox dbus-x11 xfonts-100dpi xfonts-75dpi xfonts-cyrillic

apt-get install -y python gcc make g++ wget

wget https://nodejs.org/download/rc/v4.0.0-rc.1/node-v4.0.0-rc.1.tar.gz

tar -zxvf node-v4.0.0-rc.1.tar.gz
cd node-v4.0.0-rc.1

./configure

make install
在安装并确保Node、npm和Xvfb正常工作后,我尝试在firefoxheadless上运行一些测试

以下是我用来运行Xvfb和测试脚本的命令(我编写了一个npm脚本,调用mocha和相应的测试):

这是我的输出:

> ui-tests@1.0.0 l-2361:spec /go/src/bitbucket.org/companyName/platform/qe
> npm run env-local mocha test/admin/dashboard/adminUser/pdvi-2361.js -- --reporter spec --slow 0


> ui-tests@1.0.0 env-local /go/src/bitbucket.org/companyName/platform/qe
> env envVar='local' "mocha" "test/admin/dashboard/adminUser/pdvi-2361.js" "--reporter" "spec" "--slow" "0"



  Admin Tests - Role Admin User
    1) "before all" hook
    2) "after all" hook


  0 passing (29s)
  2 failing

  1) Admin Tests - Role Admin User "before all" hook:
     Uncaught NoSuchElementError: Unable to locate element: {"method":"css selector","selector":"input[name=\"email\"]"}
      at new bot.Error (node_modules/selenium-webdriver/lib/atoms/error.js:108:18)
      at Object.bot.response.checkResponse (node_modules/selenium-webdriver/lib/atoms/response.js:109:9)
      at node_modules/selenium-webdriver/lib/webdriver/webdriver.js:379:20
      at promise.Promise.goog.defineClass.invokeCallback_ (node_modules/selenium-webdriver/lib/goog/../webdriver/promise.js:1337:14)
      at promise.ControlFlow.goog.defineClass.goog.defineClass.abort_.error.executeNext_.execute_ (node_modules/selenium-webdriver/lib/goog/../webdriver/promise.js:2776:14)
      at promise.ControlFlow.goog.defineClass.goog.defineClass.abort_.error.executeNext_ (node_modules/selenium-webdriver/lib/goog/../webdriver/promise.js:2758:21)
      at goog.async.run.processWorkQueue (node_modules/selenium-webdriver/lib/goog/async/run.js:124:15)
  From: Task: WebElement.sendKeys()
      at webdriver.WebDriver.schedule (node_modules/selenium-webdriver/lib/webdriver/webdriver.js:362:15)
      at webdriver.WebElement.schedule_ (node_modules/selenium-webdriver/lib/webdriver/webdriver.js:1817:23)
      at webdriver.WebElement.sendKeys (node_modules/selenium-webdriver/lib/webdriver/webdriver.js:1988:17)
      at AdminLogin.fillEmail (pageObject/admin/login/index.js:32:21)
      at Context.<anonymous> (test/admin/dashboard/adminUser/pdvi-2361.js:27:16)

  2) Admin Tests - Role Admin User "after all" hook:
     EBUSY: resource busy or locked, unlink '/go/src/bitbucket.org/companyName/platform/qe/tmp-31175duruauo/amd64/.nfs00000000007d601300000004'
  Error: EBUSY: resource busy or locked, unlink 'tmp-31175duruauo/amd64/.nfs00000000007d601300000004'
      at Error (native)
  From: Task: WebDriver.call(function)
      at webdriver.WebDriver.call (node_modules/selenium-webdriver/lib/webdriver/webdriver.js:642:15)
      at Driver.quit (node_modules/selenium-webdriver/firefox/index.js:296:15)
      at Context.<anonymous> (test/admin/dashboard/adminUser/pdvi-2361.js:35:24)
pdvi-2361.js:35:24此处是否有此函数:

after(function() {
    return this.driver.quit();
  });
第一个错误是由于无法访问我想要测试的网页,但我不太确定第二个错误的含义

尝试运行测试后,它创建了一个包含子文件夹的tmp文件夹

tmp-311175duruauo/
  amd64/
  extensions/
    fxdriver@googlecode.com/
      platform/
        WINNT_x86-msvc/
          components/
            imehandler.dll
      resource/
        modules/
          timer.js
          web-element-cache.js
  storage/
    permanent/
      chrome/
        .metadata
        idb/
          piupsah.files/
          piupsah.sqlite
          piupsah.sqlite-shm
          piupsh.sqlite-wal
timer.js仅为100 LOC,而web-element-cache.js几乎为10000 LOC。上面的错误没有引用这些文件,所以我猜它们与我的问题无关

这个tmp目录只有在我运行测试时才创建,我应该如何解除它的链接,为什么我需要解除它的链接

after(function() {
    return this.driver.quit();
  });
tmp-311175duruauo/
  amd64/
  extensions/
    fxdriver@googlecode.com/
      platform/
        WINNT_x86-msvc/
          components/
            imehandler.dll
      resource/
        modules/
          timer.js
          web-element-cache.js
  storage/
    permanent/
      chrome/
        .metadata
        idb/
          piupsah.files/
          piupsah.sqlite
          piupsah.sqlite-shm
          piupsh.sqlite-wal