【问题标题】:require('webdriverio') is not working with require.jsrequire('webdriverio') 不适用于 require.js
【发布时间】:2018-02-06 13:19:12
【问题描述】:

我正在尝试使用 Java 启动 webdriverio。我有两个文件,一个是 java 文件,另一个是 test.js 文件来启动 Web 驱动程序。

test.js 文件

var webdriverio = require('webdriverio');
var options = {
    desiredCapabilities: {
        browserName: 'chrome'
    }
};
function launchbrowser(){
    var client=webdriverio.remote(options).init();
    client.url('https://www.google.com');
    client.end();
}

调用 test.js 的 Java 文件

System.out.println("Launching WebDriver IO");
String testjsFile = System.getProperty("user.dir") + File.separator + "scripts"
                + File.separator + "test.js";
ScriptEngine engine = new ScriptEngineManager().getEngineByName("nashorn");
engine.eval("load('scripts/r.js');");
engine.eval(new FileReader(testjsFile));
Invocable invocable = (Invocable) engine;
invocable.invokeFunction("launchbrowser");

但在这种情况下我无法启动网络驱动程序。如果我不使用 r.js 文件,那么它会给出错误

require 未定义。

请大家帮我看看如何解决 require('webdriverio')

【问题讨论】:

  • 您是否再次尝试检查配置? webdriver.io/guide/getstarted/configuration.html
  • 是的,我已经检查了配置。你能告诉我我们如何在java中调用它
  • 您是否先尝试使用$ node test.js?
  • 是的,工作正常。但是一旦我转向 Java,它的问题就出现了。

标签: javascript java nashorn webdriver-io


【解决方案1】:

require 不是标准的 ECMAScript 内置函数。您必须使用第三方 require 实现,例如 requirejs。

我想你上面提到的 r.js 来自 requirejs.org 项目。评估“r.js”时遇到什么错误?

【讨论】:

  • 它给出了这个错误 javax.script.ScriptException:错误:模块名称“webdriverio”尚未加载上下文:_。使用 require([])
【解决方案2】:

尝试配置Babel 来自官方文档

https://webdriver.io/docs/babel.html

然后你可以使用普通的import 代替

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-10
    • 1970-01-01
    • 2016-06-24
    • 2013-06-21
    相关资源
    最近更新 更多