Javascript 在cypress中单击()命令后,网络请求并不总是发生

Javascript 在cypress中单击()命令后,网络请求并不总是发生,javascript,cypress,Javascript,Cypress,我是自动化测试新手。我正在培训如何使用cypress实现自动化,我面临的问题是,在cypress中单击()命令后,网络请求(尤其是GET-XHR请求)并不总是被触发 我在我的/support/commands.js中有一个自定义命令,它应该单击“添加到比较”链接并返回添加到比较的项目的标题: Cypress.Commands.add("addToComparison", function (index) { cy.get(".vit-item").eq

我是自动化测试新手。我正在培训如何使用cypress实现自动化,我面临的问题是,在cypress中单击()命令后,网络请求(尤其是GET-XHR请求)并不总是被触发

我在我的
/support/commands.js
中有一个自定义命令,它应该单击“添加到比较”链接并返回添加到比较的项目的标题:

Cypress.Commands.add("addToComparison", function (index) {
  cy.get(".vit-item").eq(index).find(".tovar-compare").click();
  return cy
    .get(".vit-item")
    .eq(index)
    .find(".vit-name")
    .invoke("text")
    .then((title) => {
      return title;
    });
});
然后在我的
/integration/smoke.spec.js:

describe("Add 2 items to comparison", () => {
  it("Add 2 items to comparison", () => {
    cy.visit("https://elmir.ua/cell_phones/");
    cy.addToComparison(0);
    cy.addToComparison(1);
    cy.get("#top-paging .compare-link").click();
  });
});
当用户在站点上手动执行相同操作时,单击“添加到比较”链接(
cy.get(.vit item”).eq(index)。查找(.tovar compare”)。在
addToComparison
函数中单击()
),获取对URL的请求
https://elmir.ua/response/compare.php
被触发,但当我运行测试时,GET请求会不时地被触发,但对于测试中的两个项目几乎从未触发过。

我尝试过将
addToComparison()
的调用与
then()
链接起来,但没有任何区别:

describe("Add 2 items to comparison", () => {
  it("Add 2 items to comparison", () => {
    cy.visit("https://elmir.ua/cell_phones/");
    cy.addToComparison(0).then((item1) => {
      cy.addToComparison(1).then((item2) => {
        cy.get("#top-paging .compare-link").click();
      });
    });
  });
});
此外,我还试图避免创建自定义函数,而只是在测试中直接调用
get()
方法,但这也没有什么区别:

describe("Add 2 items to comparison", () => {
  it("Add 2 items to comparison", () => {
    cy.visit("https://elmir.ua/cell_phones/");
    cy.get(".vit-item").eq(0).find(".tovar-compare").click();
    cy.get(".vit-item").eq(1).find(".tovar-compare").click();
    cy.get("#top-paging .compare-link").click();
  });
});
html代码段

<li class="vit-item">
  <section class="vit-info">
    <a
      href="/cell_phones/mobile_phone_samsung_a207f_galaxy_a20s_32_duos_red_sm-a207fzrdsek.html"
      class="vit-name"
      >Мобильный телефон Samsung A207F Galaxy A20s/32 Duos Red
      (SM-A207FZRDSEK)</a
    >
    <p class="vit-desc">
      6,5" / 720х1560 / IPS / ОЗУ - 3 ГБ / 32 ГБ встроенной памяти / Сканер
      отпечатка пальца / 4G / 2 SIM / 4000 мАч
    </p>
    <div class="vit-buy">
      <div class="btn-buy ready-1 status-1 buy-1000663 no-print">
        <div class="no-print ready btn" onclick="btn_buy(1000663);">
          <svg><use xlink:href="#v-basket"></use></svg>В корзину
        </div>
        <span class="status stat-1">есть в наличии</span>
      </div>
    </div>
    <span class="price vit-cost"
      ><zl>7</zl><zj>0</zj><zf>9</zf><zy>4</zy><zf>5</zf><zr>0</zr><zb>8</zb
      ><zu>3</zu><zx>9</zx><zv>6</zv><ze>1</ze><zz>9</zz><ze>9</ze><zo>6</zo
      ><zu>9</zu>&nbsp;грн</span
    ><br /><span class="warr"
      ><a target="_blank" href="/faq.html#q17">Гарантия:</a>&nbsp;12 мес.</span
    ><br /><span
      product="1000663"
      class="icon-eye view-rest internal-link link no-print"
      ><svg><use xlink:href="#v-avail"></use></svg>Посмотреть наличие</span
    ><br /><a
      class="icon-mail notify no-print"
      href="/?module=profile&amp;tab=subscribe&amp;add=1000663"
      ><svg><use xlink:href="#v-notify"></use></svg>Уведомить</a
    ><br /><a
      class="icon-reviews no-print"
      href="/cell_phones/mobile_phone_samsung_a207f_galaxy_a20s_32_duos_red_sm-a207fzrdsek.html#reviews"
      ><svg><use xlink:href="#v-reviews"></use></svg>Отзывы (0)</a
    ><br /><span product="1000663" class="tovar-wishlist no-print"
      ><svg><use xlink:href="#v-wish"></use></svg></span
    ><br /><span class="catalog-tovar-id">Код товара: 1000663</span><br /><span
      compare_id="lg47"
      parent_id="97516"
      class="no-print tovar-compare add-link"
      >Добавить к сравнению</span
    >
  </section>
</li>
  • 12.
  • 通常只有第一次运行的测试通过,但在我重新运行测试之后,问题出现了(但我不确定)

    我想我做错了什么,因为这不是唯一一个单击元素不会触发GET XHR请求的站点(我触发了,但只触发了其中的一部分)。我尝试了另一个逻辑非常相似的站点,但出现了相同的问题


    请帮助。

    问题已在此处解决:
    Cypress在元素可见且可单击时查找元素
    cy.get(“.vit item”).eq(index).find(.tovar compare”)
    ,但并非所有EventListener都已附加到该元素。您可以借助
    cypress pipe
    plugin

    解决此问题。问题在此处解决:
    Cypress在元素可见且可单击时查找元素
    cy.get(“.vit item”).eq(index).find(.tovar compare”)
    ,但并非所有EventListener都已附加到该元素。您可以借助于
    cypress pipe
    plugin

    解决这种情况。您还可以包括有关测试的相关html吗?谢谢您对我的问题感兴趣。用html代码段编辑了这个问题。你能不能也包括与问题测试相关的html?谢谢你对我的问题感兴趣。用html代码段编辑了问题