node.js - 使用本地功能时找不到`newSession`
问题描述
尝试使用 BrowserStack 本地功能时遇到此错误:
(node:67602) UnhandledPromiseRejectionWarning: UnsupportedOperationError: newSession: Not Found
at parseHttpResponse (/Users/ardo/Documents/workspace/test-browser-stack/node_modules/selenium-webdriver/lib/http.js:578:11)
at Executor.execute (/Users/ardo/Documents/workspace/test-browser-stack/node_modules/selenium-webdriver/lib/http.js:489:26)
at process._tickCallback (internal/process/next_tick.js:68:7)
(node:67602) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). (rejection id: 1)
(node:67602) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.
(node:67602) UnhandledPromiseRejectionWarning: UnsupportedOperationError: newSession: Not Found
at parseHttpResponse (/Users/ardo/Documents/workspace/test-browser-stack/node_modules/selenium-webdriver/lib/http.js:578:11)
at Executor.execute (/Users/ardo/Documents/workspace/test-browser-stack/node_modules/selenium-webdriver/lib/http.js:489:26)
at process._tickCallback (internal/process/next_tick.js:68:7)
(node:67602) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). (rejection id: 3)
我的代码很简单:
const webdriver = require('selenium-webdriver');
const browserstack = require('browserstack-local');
const runTestSuite = () => {
const capabilities = {
browserName: 'Chrome',
browser_version: '80.0 beta',
os: 'OS X',
os_version: 'Catalina',
resolution: '1024x768',
'browserstack.user': '<user>',
'browserstack.key': '<key>',
'browserstack.local': true,
'browserstack.localIdentifier': 'ardotest',
// 'browserstack.use_w3c': true,
acceptSslCerts: true,
name: 'Bstack-[Node] Sample Test-OS X Catalina-Chrome 80',
};
// https://www.browserstack.com/question/663
const driver = new webdriver.Builder()
.usingServer('http://localhost:3000') // tried using the IP that I got from Network settings on my machine, it spat out the same error
.withCapabilities(capabilities)
.build();
console.log('quit');
driver.quit();
};
// creates an instance of Local
const bsLocal = new browserstack.Local();
// replace <browserstack-accesskey> with your key. You can also set an environment variable - "BROWSERSTACK_ACCESS_KEY".
const bsLocalArgs = { key: '<browserstack-accesskey>' };
// https://github.com/browserstack/browserstack-local-nodejs/blob/master/lib/Local.js
// starts the Local instance with the required arguments
bsLocal.start(bsLocalArgs, function(err) {
if (err) {
console.error(err);
return;
}
if (!bsLocal.isRunning()) {
return;
}
try {
runTestSuite();
} catch (e) {
console.error(e);
} finally {
// stop the Local instance
bsLocal.stop(function(err) {
if (err) {
console.error(err);
}
console.log('===== BrowserStack tunnel stopped =====');
});
}
});
版本:
"selenium-webdriver": "^4.0.0-alpha.5",
"browserstack-local": "^1.4.5",
我的本地环境:
"node": "10.16.3",
"npm": "6.8.0",
macOS 10.14.6
查看代码,很明显它正在尝试点击/session
url 来创建一个新的会话或其他东西。我不确定是否应该/session
手动支持,或者我只是在这里遗漏了一些非常愚蠢的东西?
解决方案
BrowserStack 似乎为测试执行提供了自己的 Hub URL。您可以尝试将 hub URL 从 localhost:3000 更改为 BrowserStacks hub url。
参考这段代码 -> .usingServer(' http://localhost:3000 ')
本文档有更多详细信息:https ://www.browserstack.com/local-testing/automate
推荐阅读
- python-3.x - 逻辑回归,混淆矩阵的第二列显示零
- regex - 正则表达式错误 \g 转义
- node.js - For Loop 在 Mongoose FindOne 之前完成
- ios - 目标 C:如何在没有大量 if 语句的情况下检查对象类型
- android - Espresso 为 edittext 设置光标
- python - 不知道复选框是否被选中
- database - 如何在 cassandra 中进行 100 万次插入
- c# - 如何在 Asp:image 中显示图像?
- c++ - 整数到字符的实现
- python-3.x - 无法使用 filedialog.askopenfilename 打开文件