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

使用Selenium删除移动端Safari Cookie及iOS UI自动化测试故障排查

iOS Safari自动化测试第二个用例自动跳转的解决方案

嘿,我太懂这个坑了!这绝对是iOS Safari的会话缓存在搞事情——第一个测试用例走完认证流程后,浏览器把会话Cookie、本地存储这些数据牢牢存下来了,第二个用例启动时直接复用了这些缓存状态,根本没走初始URL的正常流程,直接跳去之前认证后的页面了,自然就失败了。

给你几个亲测有效的解决办法:

  • 每个测试结束后彻底清理浏览器缓存
    不管你用的是Appium、Playwright还是其他自动化框架,一定要在测试的收尾阶段(teardown)加清理操作:

    • 用Appium的话,可以执行JS代码清掉本地存储和Cookie:
      driver.executeScript("window.localStorage.clear();");
      driver.deleteAllCookies();
      
      另外还可以重置浏览器上下文,确保下一个测试从零开始。
    • 用Playwright的话更简单,要么在每个测试后调用context.clearCookies()和context.clearPermissions(),要么干脆给每个测试用例创建全新的浏览器上下文(browser.newContext()),完全隔离各个测试的环境。
  • 强制用无痕窗口跑每个测试
    iOS Safari的无痕模式天生会隔离会话,不会保留任何缓存数据。你可以配置自动化框架,让每个测试都在无痕窗口启动:

    • Appium里把capabilities的safari:usePrivateMode设为true;
    • Playwright创建上下文时加{ incognito: true }参数就行。
  • 确保测试用例的前置条件完全独立
    别让第二个测试依赖第一个测试的状态!每个测试用例的前置步骤都要明确导航到登录页面,而不是直接跳目标页面,哪怕缓存里有认证信息,也强制触发一次完整的认证流程,从根源上避免跳转问题。

你可以手动验证一下:第一个测试跑完后,手动关闭Safari再打开,输入初始URL,如果也自动跳转,那百分百是缓存的锅,上面的方法肯定能解决。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:08:28