Nightwatchjs声称支持Edge浏览器,但实际上似乎并不支持它,至少在基于文档实现时是这样



我试图让Nightwatchjs识别Edge浏览器并在其上运行测试

Unsupported browser: microsoftedge. There is no available driver.

我已经为此搜索了几个小时,在Edge浏览器抛弃EdgeHtml并基于Chromium之前,似乎有几次提到它。我尝试了这些地方的所有建议。我还使用了Github上的示例项目,比如在mucsi96/nightwatchapi中看到的项目。

每次尝试都会导致上述错误。我试着把它命名为edge,microsoftedge,甚至尝试了一个假装它实际上是IE的建议。Nightwatch甚至在这里提到了对边缘浏览器的支持。但文件非常有限,所有建议的方法都不起作用。

我已经尝试了几种不同的配置方法,比如:

edge: {
desiredCapabilities: {
browserName: 'MicrosoftEdge',
javascriptEnabled: true
}
}
edge: {
desiredCapabilities : {
browserName : 'MicrosoftEdge',
edgeOptions:{
w3c: false,
}
},
start_process: false,
webdriver: {
default_path_prefix: '',
server_path: './node_modules/edgedriver/bin/edgedriver',
start_process: true,
use_legacy_jsonwire: true
}
},

我还有最新版本的Nightwatch(1.4.3(。看起来问题出在browserName属性上,而检查该名称的文件没有为Edge实现任何功能,尽管Nightwatchjs声称支持它。有什么想法吗?

注意:我使用的是cucumber js和Nightwatchjs。

我已经为此手动编写了一个解决方法。我修改了Nightwatchjs代码,增加了对它所支持的浏览器的支持,但缺少代码。

EdgeDriver逻辑EdgeDriver.js

OperaDriver逻辑operatadriver.js

这些都是全新的文件/node_modules/noghtwatchjs/lib/runner/wd实例。

接下来,用这个替换现有的browersname.js文件(或者只需手动在中添加新的浏览器名称。

最后,转到webdriver-server.js并将以下代码片段添加到";createInstance(("switch语句中的方法:

case BrowserName.EDGE:
WebDriverImpl = EdgeDriver;
break;
case BrowserName.OPERA:
WebDriverImpl = OperaDriver;
break;

并将其添加到顶部

const EdgeDriver = require('./wd-instances/edgedriver.js');
const OperaDriver = require('./wd-instances/operadriver.js');

这将允许您现在注册Opera或Edge浏览器,并从nightwatch.conf.js文件(或json文件(中对其进行测试。以下是我的声明:

edge: {
desiredCapabilities: {
//alwaysMatch: { 'ms:edgeOptions': { args: ['--headless'] } },
browserName: 'MicrosoftEdge',
javascriptEnabled: true,
acceptSslCerts: true,
edgeOptions:{
w3c: false,
args : ["disable-web-security", "ignore-certificate-errors", "no-sandbox", "disable-gpu"]
}
},
start_process: false,
webdriver: {
default_path_prefix: '',
server_path: './bin/drivers/edgedriver',
start_process: true,
port: 4445,
use_legacy_jsonwire: true
}
},
opera: {
desiredCapabilities : {
browserName : 'opera',
operaOptions : {
w3c: false,
args : ["disable-web-security", "ignore-certificate-errors", "no-sandbox", "disable-gpu"]
},
},
webdriver: {
start_process: true,
port: 4450,
server_path: './bin/drivers/operadriver',
cli_args: [
// --verbose
]
}
}

";args";上面可能对这两个浏览器无效,但因为它们是chrome,所以我复制了chrome标志。我还没有证实它们确实有效,所以请记住这一点。

最新更新