Javascript 在cypress中单击()命令后,网络请求并不总是发生
我是自动化测试新手。我正在培训如何使用cypress实现自动化,我面临的问题是,在cypress中单击()命令后,网络请求(尤其是GET-XHR请求)并不总是被触发 我在我的Javascript 在cypress中单击()命令后,网络请求并不总是发生,javascript,cypress,Javascript,Cypress,我是自动化测试新手。我正在培训如何使用cypress实现自动化,我面临的问题是,在cypress中单击()命令后,网络请求(尤其是GET-XHR请求)并不总是被触发 我在我的/support/commands.js中有一个自定义命令,它应该单击“添加到比较”链接并返回添加到比较的项目的标题: Cypress.Commands.add("addToComparison", function (index) { cy.get(".vit-item").eq
/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> грн</span
><br /><span class="warr"
><a target="_blank" href="/faq.html#q17">Гарантия:</a> 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&tab=subscribe&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代码段编辑了问题