当我尝试通过PhantomJS运行测试时,这个DalekJS错误是什么?

时间:2015-09-22 10:18:41

标签: testing phantomjs automated-tests headless-browser dalekjs

每当我尝试使用PhantomJS进行测试时,Dalek都会给我这个错误。但是,使用GoogleChrome,测试运行正常。

Running tests

/Users/user/node_modules/dalekjs/node_modules/dalek-browser-phantomjs/index.js:273

this.spawned.kill('SIGTERM');

            ^



TypeError: Cannot read property 'kill' of null

  at Object.PhantomJSDriver.kill (/Users/user/node_modules/dalekjs/node_modules/dalek-browser-phantomjs/index.js:273:17)

  at EventEmitter.emit (/Users/user/node_modules/dalekjs/node_modules/eventemitter2/lib/eventemitter2.js:312:17)

  at Object.Dalek._shutdown (/Users/user/node_modules/dalekjs/lib/dalek.js:346:24)

  at emitOne (events.js:77:13)

  at process.emit (events.js:169:7)

  at process._fatalException (node.js:211:26)

问题是什么?

请注意我使用的是OS X 10.10.5,我是Dalek和JS测试自动化的初学者。谢谢!

3 个答案:

答案 0 :(得分:3)

刚刚遇到这个问题并且在阅读了一段时间后得到了这个步骤:

  1. 按照建议安装DalekJS
  2. npm install phantom phantomjs -g
  3. 检查运行phantomjs -v
  4. 的phantomJS安装
  5. (可选)再次运行dalek以查看其失败
  6. 搜索正在运行的本地phantomjs安装
    find . -name 'phantom*'并确定dalek的幻影依赖
  7. 删除dalek的phantomjs依赖项运行
    rm -fr ./node_modules/dalek-browser-phantomjs/node_modules/phantomjs
  8. 将最近安装的phantomJS复制到刚刚删除的路径中
    cp -r /usr/local/lib/node_modules/phantomjs ./node_modules/dalek-browser-phantomjs/node_modules/phantomjs
  9. 再次运行dalek,您的测试应该有效。
  10. 希望它有所帮助。最好的问候。

答案 1 :(得分:2)

看起来dalek-browser-phantomjs中缺少一些文件

缺少folders/files are from dalek-browser-phantomjs/node-modules/phantomjs/lib

如果单独安装phantomjs(npm install phantomjs),您将获得一个名为"location.js"的文件+一个名为"phantom"的目录。 location.js文件包含phantomjs的路径,而phantom文件夹包含二进制文件。

这两个缺失,导致this.spawned设置为null的错误,该错误会导致错误dalekjs/node_modules/dalek-browser-phantomjs/index.js:273:17

简而言之:

  1. 从npm(npm install phantomjs)下载最新的phantom.js
  2. 将其替换为项目中的phantomjs文件夹。 地点:
  3. yourproject / node_modules / dalekjs / node_modules / Dalek的浏览器-phantomjs /节点模块/

    现在你所有的测试都应该有效!

答案 2 :(得分:1)

我遇到了同样的问题。

我认为问题可能是你的" node_modules"正在使用root权限创建目录。

因此,在DalekJS主页上,它只是说没有sudo或root运行npm install命令。第一个命令安装模块,第二个命令,但是为phantomJS使用配置你的目录 - 如果你用root权限调用第二个命令(npm install dalekjs --save-dev)那么这将导致问题。

所以:

  1. 安装pacakges: sudo npm install dalek-cli -g
  2. 使用默认的" package.json"配置目录。文件 - 听起来像你已经完成1& 2
  3. 然后打开CLI /终端并转到包含package.json和" tests"的目录。目录。
  4. 执行下一个npm命令 WITH ROOT / SUDO权限:`npm install dalekjs --save-dev' (必须在Ubuntu上做类似的事情)。 我接下来遇到的问题是,npm caommand挂起 - 记录在这里on Github
  5. 这在OS X上对我有用,而且我无法在其他任何地方找到解决方案,所以我想发布...希望它有所帮助!