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

Java Selenium执行JS删除浏览器IndexedDB无效问题排查

解决Selenium中IndexedDB删除无效的问题

以下是可能的原因和对应的解决办法:

  • 异步操作未等待完成
    indexedDB.deleteDatabase是异步API,Selenium执行完executeScript后会立刻继续后续步骤,不会等待删除操作的异步回调完成。你需要在脚本中通过Promise等待删除结果,确保操作执行完毕:

    JavascriptExecutor js = (JavascriptExecutor) getDriver();
    js.executeScript("""
        return new Promise((resolve, reject) => {
            const request = window.indexedDB.deleteDatabase('test-db');
            request.onsuccess = () => resolve('删除成功');
            request.onerror = (e) => reject(e.error);
            request.onblocked = () => reject('删除被其他连接阻塞');
        })
        """);
    
  • 页面上下文不匹配
    确认执行脚本时,当前浏览器窗口/iframe的页面域名,和存储test-db的IndexedDB所属域名完全一致。如果测试过程中发生了页面跳转、切换到iframe等操作,当前上下文不对的话,无法访问目标数据库。需要先切换到正确的窗口或iframe,再执行删除脚本。

  • 浏览器启动参数限制
    检查Selenium启动浏览器时的参数,是否添加了限制存储操作的配置(比如Chrome的--incognito模式下部分存储行为会有差异,或者--disable-storage这类禁用存储的参数),确保没有限制IndexedDB的正常操作。

  • 数据库名称拼写/大小写问题
    再次核对代码中'test-db'的拼写和大小写,IndexedDB的数据库名称是严格区分大小写的,确保和实际存储的数据库名称完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 06:05:21