【问题标题】:"Error: not found: java" when running webdriver.io test运行 webdriver.io 测试时出现“错误:未找到:java”
【发布时间】:2020-10-22 09:07:07
【问题描述】:

我正在尝试从 VS Code 调试器运行 webdriver.io test suite,但它失败并显示错误消息:

ERROR @wdio/cli:utils: A service failed in the 'onPrepare' hook
Error: not found: java
at getNotFoundError (/Users/andrew/projects/rod-licensing-tests/packages/frontend-acceptance-tests/node_modules/selenium-standalone/node_modules/which/which.js:10:17)

我该如何解决这个问题?通过查看网络上的类似问题,我尝试了以下方法,结果相同:

  1. npm install
  2. 使用npm install java安装Java
  3. 使用./node_modules/.bin/selenium-standalone install 安装 selenium-standalone
  4. 将环境变量添加到我的launch.json 配置:"JAVA_HOME": "/usr/libexec/java_home"
  5. 通过系统偏好设置将我 Mac 上的 Java 更新到 Java 8 update 271

测试确实使用 Docker 成功运行,但理想情况下我也希望从 IDE 运行它,以便我可以快速启动和调试它们。另外,我的同事可以在 IntelliJ IDE Ultimate 中使用 config 运行相同的测试,但我觉得这在 VS Code 中也应该是可能的。

这是我的launch.json 文件的当前内容:

{
  "version": "0.2.0",
  "configurations": [
    {
      "name": "Launch via NPM",
      "type": "pwa-node",
      "args": [
        "conf/local.conf.js",
        "--logLevel trace"
      ],
      "cwd": "${workspaceFolder}/packages/frontend-acceptance-tests",
      "env": {
        "JAVA_HOME": "/usr/libexec/java_home",
        "SERVICE_URL": "[redacted]",
        "OAUTH_AUTHORITY_HOST_URL": "[redacted]",
        "OAUTH_TENANT": "[redacted]",
        "OAUTH_CLIENT_ID": "[redacted]",
        "OAUTH_CLIENT_SECRET": "[redacted]",
        "OAUTH_SCOPE": "[redacted]",
        "DYNAMICS_API_PATH": "[redacted]",
        "DYNAMICS_API_VERSION": "9.1"
      },
      "request": "launch",
      "runtimeExecutable": "${workspaceFolder}/packages/frontend-acceptance-tests/node_modules/.bin/wdio",
      "runtimeVersion": "14.13.0"
    }
  ]
}

我对 Node.JS 还是很陌生,所以还在学习它是如何组合在一起的。任何建议表示赞赏!

【问题讨论】:

  • 当您使用“selenium-standalone”时,您需要在机器上安装 JAVA-JDK webdriver.io/docs/selenium-standalone-service.html。在当前项目中 package.json 已经包含 selenium-standalone 依赖项,因此您应该可以使用它。参考这个webdriver.io/docs/debugging.html 获取launch.json
  • 谢谢拉胡尔。我已经将我的 launch.json 更改为更接近 webdriver.io 调试文档,并且原来的 java 错误现在已经消失了!我现在明白了:ERROR @wdio/runner: /Users/andrew/projects/rod-licensing-tests/packages/frontend-acceptance-tests/node_modules/simple-oauth2/lib/client.js:19 #config = null 所以会进一步调查。
  • @RahulL 现在已修复,感谢您的 wdio 调试链接!我认为关键是:设置"type": "node",删除"runtimeExecutable" 并添加"program": "${workspaceFolder}/packages/frontend-acceptance-tests/node_modules/.bin/wdio"。请随意回复完整答案,我会将其标记为已接受。

标签: java node.js selenium visual-studio-code webdriver-io


【解决方案1】:

如果我们使用 selenium-standalone-service 来运行测试,那么需要安装 JAVA-JDK。 package.json 中也应该有以下依赖项

{
    "devDependencies": {
        "@wdio/selenium-standalone-service": "^6.6.1"
    }
}

>npm install @wdio/selenium-standalone-service --save-dev

用于 VScode 调试

根据documentation,我们需要启用JavaScript Debugger (Nightly)

示例 .vscode/launch.json 应如下所示

{
    "name": "run select spec",
    "type": "node",
    "request": "launch",
    "args": ["wdio.conf.js", "--spec", "${file}"],
    "cwd": "${workspaceFolder}",
    "autoAttachChildProcesses": true,
    "program": "${workspaceRoot}/node_modules/@wdio/cli/bin/wdio.js",
    "console": "integratedTerminal"
},

例如:launch.json

【讨论】:

  • 这为我解决了问题。对我来说,关键是我的launch.json 不正确,但文档链接为我指明了正确的方向。我在 Mac 上,所以看起来我不需要 Nightly。谢谢拉胡尔!
【解决方案2】:

您通常需要使用 Java 版本 1.8 配置您的项目 sdk,可以通过此链接安装:

https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html

但我看到你已经尝试过了。也许您需要将 selenium jar 文件添加到项目的依赖项中。

【讨论】:

  • 这很有帮助,我已经检查了我的 JDK8 安装。尝试添加依赖项仍然给我一个类似的问题,但从 Rahul 在 cmets 中的建议来看,看起来依赖项已经设置,问题可能是我如何在 VS Code 中设置 WDIO。我会继续走这条路——谢谢你的帮助!
  • 我明白了,不用担心!祝你好运(:
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-01-13
  • 2015-07-17
  • 1970-01-01
  • 1970-01-01
  • 2011-01-25
相关资源
最近更新 更多