0

我正在使用 WebdriverIO API 创建一个新的 Appium WebDriver 会话:

const options = {...};
const driver: Browser<"async">;

try {
    driver = await remote(options);
} catch (error) {
    console.log("Error:", error);
}

在 BrowserStack 中,可以运行的并行测试的数量是有限制的。我达到了这个限制和我对remote错误的调用,在 catch 中,我得到了这个内部变量error

Failed to create session.

这并没有给我太多关于呼叫失败原因的信息。另一方面,驱动程序正在发出给出这样一个答案的日志:

XXXX-XX-XXTXX:XX:XX.XXXZ ERROR webdriver: [BROWSERSTACK_ALL_PARALLELS_IN_USE] All parallel tests are currently in use, including the queued tests. Please wait to finish or upgrade your plan to add more sessions.: [BROWSERSTACK_ALL_PARALLELS_IN_USE] All parallel tests are currently in use, including the queued tests. Please wait to finish or upgrade your plan to add more sessions.
    at Object.getErrorFromResponseBody (/home/vsts/work/1/s/node_modules/webdriverio/node_modules/webdriver/build/utils.js:189:12)
    at /home/vsts/work/1/s/node_modules/webdriverio/node_modules/webdriver/build/request.js:168:31
    at Generator.next (<anonymous>)
    at asyncGeneratorStep (/home/vsts/work/1/s/node_modules/webdriverio/node_modules/webdriver/build/request.js:9:103)
    at _next (/home/vsts/work/1/s/node_modules/webdriverio/node_modules/webdriver/build/request.js:11:194)
    at processTicksAndRejections (node:internal/process/task_queues:96:5)

问题

我如何在调用时获得有关错误性质的更多信息remote?我想检测 的发生,BROWSERSTACK_ALL_PARALLELS_IN_USE以便我可以在代码中实现一些围绕这个问题的策略(比如在一些随机时间后重试)。

4

2 回答 2

0

实际上,错误是一个适当的Error对象,并且具有message并且stack可用。显示的日志封装在消息中,因此以下内容即可:

try {
    driver = await remote(options);
} catch (error) {
    if (error.message.indexOf("BROWSERSTACK_ALL_PARALLELS_IN_USE") >= 0) {
        // Retry
    }
    // Do something else
}
于 2021-12-16T08:13:02.933 回答
0

该错误BROWSERSTACK_ALL_PARALLELS_IN_USE表明您所有正在运行的线程和排队的线程都已满,无法触发更多测试。

一旦你最大化了你正在运行的+排队的线程,任何启动的新会话都会被删除BROWSERSTACK_ALL_PARALLELS_IN_USE

在有可用线程之前,您将无法再触发任何测试。

您可以通过设置查看https://webdriver.io/docs/organizingsuites/maxInstances。这将允许您限制触发的测试数量。

于 2021-12-15T10:08:20.653 回答