【问题标题】:Detect BROWSERSTACK_ALL_PARALLELS_IN_USE error when instantiating a driver with WebdriverIO使用 WebdriverIO 实例化驱动程序时检测 BROWSERSTACK_ALL_PARALLELS_IN_USE 错误
【发布时间】:2022-01-18 11:50:45
【问题描述】:

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

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

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

在 BrowserStack 中,可以运行的并行测试的数量是有限制的。我达到了这个限制并且我对remote 的调用出现了错误,并且在捕获中,我在变量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 的出现,以便我可以在代码中实现一些解决此问题的策略(例如在随机时间后重试)。

【问题讨论】:

    标签: webdriver appium webdriver-io browserstack browserstack-app-automate


    【解决方案1】:

    错误BROWSERSTACK_ALL_PARALLELS_IN_USE表示你所有正在运行的线程和排队的线程都已满,无法再触发测试。

    一旦你用尽了正在运行的 + 排队的线程,任何发起的新会话都会被BROWSERSTACK_ALL_PARALLELS_IN_USE 丢弃。

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

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

    【讨论】:

    • 是的,我明白你的意思,感谢你的回答,但我担心你错过了这里的重点。我想在代码中获取有关此特定错误的详细信息,以便我可以采取一些措施。如果 WebdriverIO 被用作测试运行程序,那么您的观点也是有效的,这不是我正在做的事情,并且由于一系列原因无法做到:(
    【解决方案2】:

    实际上错误是一个正确的Error 对象,并且有messagestack 可用。显示的日志封装在消息中,所以下面的就可以了:

    try {
        driver = await remote(options);
    } catch (error) {
        if (error.message.indexOf("BROWSERSTACK_ALL_PARALLELS_IN_USE") >= 0) {
            // Retry
        }
        // Do something else
    }
    

    【讨论】:

      猜你喜欢
      • 2013-12-11
      • 2019-04-30
      • 2017-02-14
      • 1970-01-01
      • 2015-03-23
      • 2012-08-27
      • 1970-01-01
      • 2021-06-05
      • 1970-01-01
      相关资源
      最近更新 更多