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

使用Cypress测试WordPress插件:购物车添加商品后为空问题

排查WordPress购物车为空问题(Cypress测试+手动Cypress浏览器)

嘿,你遇到的这个情况很关键——连手动在Cypress配套的Chrome里操作都出问题,这说明大概率不是你的Cypress测试代码写错了,而是和Cypress的浏览器环境、WordPress的购物车存储机制,或者你的自定义插件逻辑有关。我给你梳理几个一步步排查的方向:

1. 先确认普通Chrome的行为是否正常

先别着急盯着Cypress,先在你日常用的普通Chrome浏览器里手动走一遍添加商品到购物车的流程:

  • 如果普通Chrome里购物车能正常显示商品,那问题肯定出在Cypress的浏览器环境配置上;
  • 如果普通Chrome里也空,那就是你的WordPress插件/主题(比如用了WooCommerce的话)本身的逻辑或者配置有问题。

2. 检查Cypress的Cookie/Session保留设置

Cypress默认会在每个测试用例开始时清空所有Cookie和LocalStorage,而WordPress的购物车通常依赖会话Cookie来保存数据。你可以试试保留相关的Cookie:

  • 单个测试用例里临时保留:
    beforeEach(() => {
      // 替换成你实际站点的Cookie名,通常是wordpress_logged_in_*、woocommerce_cart_hash这类
      Cypress.Cookies.preserveOnce('wordpress_logged_in_xxxx', 'woocommerce_cart_hash', 'woocommerce_items_in_cart');
    });
    
  • 或者全局配置(在cypress.config.js里):
    export default defineConfig({
      e2e: {
        setupNodeEvents(on, config) {},
        cookies: {
          // 用通配符匹配所有相关Cookie
          preserve: ['wordpress_logged_in_*', /woocommerce_.+/],
        },
      },
    });
    

3. 确认“添加购物车”的动作真的触发了

你的测试代码里是点击聊天机器人iframe里的go-to-cart-button,但你提到的是“内置Add to cart按钮”——这里要确认:这个按钮是真的执行了添加商品的动作,还是只是跳转到购物车页面?
你可以在测试里加个请求拦截,验证添加购物车的API是否被正确调用:

// 拦截WooCommerce的添加购物车请求,替换成你实际的接口路径
cy.intercept('POST', '/wp-json/wc/v3/cart/add').as('addToCart');

cy.getChatbotIframe().find("[data-cy=go-to-cart-button]").click();

// 等待请求完成,并验证状态码
cy.wait('@addToCart').its('response.statusCode').should('eq', 200);

4. 排查iframe跨域问题

聊天机器人在iframe里,可能存在跨域限制,导致添加购物车的请求没带上必要的Cookie:

  • 先确认你的WordPress站点和iframe的域名是否一致,如果不一致,得配置CORS允许跨域携带Cookie;
  • 测试阶段可以临时禁用Cypress的Chrome跨域安全策略(仅测试用,生产环境别这么搞):
    export default defineConfig({
      e2e: {
        chromeWebSecurity: false,
      },
    });
    

5. 确保购物车页面完全加载后再检查

有时候购物车页面还没加载完就去检查,会误以为是空的。可以明确跳转到购物车页面,并等待元素加载:

// 明确跳转到购物车页面
cy.visit('/cart');
// 等待购物车项元素出现,替换成你站点实际的购物车项选择器
cy.get('.cart-item').should('exist');

6. 检查自定义插件的购物车逻辑

如果以上都没问题,那就要看看你的自定义插件代码了:

  • 检查插件里处理添加购物车的逻辑,是否正确设置了会话或者Cookie;
  • 开启WordPress的调试模式(在wp-config.php里设置WP_DEBUG=true),查看wp-content/debug.log里有没有相关报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 19:48:15