【问题标题】:How to grab the :id from URLs using Cypress?如何使用赛普拉斯从 URL 中获取 :id?
【发布时间】:2019-09-11 14:42:04
【问题描述】:

我目前正在进行赛普拉斯测试,遇到了一个我找不到答案的问题。希望有人可以提供帮助。

因此,在 ReactJs 中,我有以下要测试的组件:

<Link
  to={`/example/${exampleId}/subexample/create`}
  className={classes.linkIcon}
  title="Create subexample"
  data-test="new-subexample"
>

为了测试这件作品,我首先在赛普拉斯创建了一个新的example,它工作正常,但随后测试subexample 给我带来了问题,因为data-test="new-subexample" 没有达到我的预期(即点击在/example/:exampleId/subexample/create 链接上)。这是一些代码:

    cy.get("[data-test=new-subexample]").click()
    const subexample = faker.lorem.paragraph().substring(0, 200);

    ......
    cy.get('[data-test="submit-subexample"]').click();
    cy.get(".toast--success").should("be.visible");
  });

以前有没有人遇到过这种情况,您是如何设法单击 id 一直在变化的链接的?

另外,也许一种方法是在创建example(也通过赛普拉斯)之后获取:exampleId,但我找不到任何地方如何使用赛普拉斯从 URL 中获取元素。

提前致谢。

screenshot of the error

更新:问题在于重定向需要一些时间并且从未及时完成以使测试通过。我在重定向之前添加了一个等待(使用 cy.wait())时间,现在测试通过了。

【问题讨论】:

  • 错误截图似乎与您代码中提到的元素无关。
  • 很好,你注意到了,会用解决方案更新我的问题。

标签: reactjs cypress


【解决方案1】:

要测试重定向后的URL,可以使用cy.url

cy.url().should('include', `/example/${exampleId}/subexample/create`);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-12
    • 2018-06-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多