Cypress 命令的运行顺序

问题描述 投票:0回答:2

据我了解,由于Javascript是异步的,所以Cypress框架也是异步的。这意味着 1) Cypress 命令排队并按照排队顺序运行,2) 第二个 Cypress 命令不会等待第一个 Cypress 命令完成。

我对下面的场景有疑问,我们单击烤肉串菜单,然后单击特定的烤肉串菜单项。注意,在单击烤肉串菜单项之前单击烤肉串菜单非常重要。这似乎工作正常。它工作正常只是侥幸吗? 为什么我没有遇到在第一个命令完成之前运行第二个命令的问题?

kebabmenu = "a.pf-c-dropdown__menu";
kebabmenuItem = "#delete";

cy.get(kebabmenu).click();
cy.get(kebabmenuItem).click;
asynchronous cypress
2个回答
0
投票

你的第二点是错误的。 Cypress 命令按连续的确定性顺序运行。 以下是官方文档的摘录:

  1. 您不能同时(并行)竞赛或运行多个命令。

Cypress 的全部目的(以及它与其他测试工具的显着不同)是创建一致的、非片状的测试,这些测试从一次运行到下一次运行都表现相同


0
投票

Cypress 命令是异步的,但它们仍然等待前一个命令成功(或失败)。 这意味着如果

cy.get(kebabmenu).click()
失败,测试将停止并且不会继续执行下一个命令。

如果在单击

kebabmenuItem
之前
kebabmenu
不可见,那么您就被覆盖了,因为通过调用
cy.get(kebabmenuItem)
,cypress 默认情况下会确保该元素存在于 DOM 中(使用 默认超时)。

如果这两个元素从一开始就可见,并且当您单击

kebabmenu
时发生其他事情,需要在单击
kebabmenuItem
之前完成,您可以在执行
cy.get(kebabmenuItem).click;

之前实现等待。
© www.soinside.com 2019 - 2024. All rights reserved.