You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在WebdriverIO+Appium+Flutter+BrowserStack iOS环境下重置会话?

在BrowserStack上执行Cucumber测试时重置Driver会话的问题

我在BrowserStack上运行Cucumber特性文件,目标是重置driver会话,让每个登录测试场景都从全新状态开始。尝试了以下多种方案,均未成功:


方案1:完全卸载重装App(iOS)

  • 问题现象:App能够启动,但无法与设备交互,日志报错500未知服务器端错误
//app starts but cannot interact with device
//[0-0] 2023-11-07T10:37:33.182Z ERROR webdriver: Request failed with status 500 due to unknown error: An unknown server-side error occurred while processing the command.
//Original error: {}
async function fullResetOnIos(){
    await driver.switchContext('NATIVE_APP');
    await driver.terminateApp('nl.abp.app');
    await driver.removeApp('nl.abp.app');
    await driver.installApp(appIos); // 'browserstack.midSessionInstallApps' required
    await driver.launchApp(); //deprecated in logs
    await driver.switchContext('FLUTTER');
}

方案2:关闭并重启App

  • 问题现象:App能够启动,但无法与设备交互,日志出现状态13请求失败、状态200未知错误等信息
// app starts but cannot interact with device
/[0-0] 2023-10-31T08:35:25.289Z DEBUG webdriver: request failed due to status 13
//[0-0] 2023-10-31T08:35:25.290Z WARN webdriver: Request failed with status 200 due to unknown error
// [0-0] 2023-10-31T08:35:08.060Z ERROR webdriver: Request failed with status 200 due to WebDriver Error: unknown error
async function closeAndLaunchApp() {
    await driver.switchContext('NATIVE_APP');
    await driver.closeApp();
    await driver.launchApp();
    await driver.switchContext('FLUTTER');
}

方案3:重新加载会话

  • 问题现象:执行结果极不稳定,有时测试通过有时因超时失败;一旦某个场景失败,后续场景也会跟着失败
// Very inconsistent, sometimes test execution is green, sometimes not because of timeouts
// When a test fails in a scenario, the last scenario will also fail in browserstack
async function reloadSession() {
    await driver.reloadSession();
}

方案4:终止并激活App

  • 问题现象:被测App停止运行,iOS设备上的缓存未被清除
//app under test stops functioning, caches are not cleared on iOS device
async function terminateAndActivate() {
    await driver.switchContext('NATIVE_APP');
    await driver.terminateApp('nl.abp.app');
    await driver.activateApp('nl.abp.app');
    await driver.switchContext('FLUTTER');
}

除此之外还尝试了其他方法,但都没有效果。请问有没有人遇到过类似问题,能提供可行的解决方案?

内容的提问来源于stack exchange,提问作者JH.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 15:15:29