我知道有一些与我类似的问题,但我无法用解决方案解决我的问题。
我正在做一个将产品添加到购物车的测试,我想编写的逻辑是如果该商品没有缺货,然后单击“添加到购物车”按钮,
这是我的代码
describe('Add item to cart', () => {
it('should be able to add all items into the cart', () => {
caseData.forEach(item => {
const url = baseURL + item.url;
cy.visit(url);
cy.get(`[data-test-id=${notifyButton}]`).then(element => {
if (element.length === 0) { // check if the item is not out of stock
cy.scrollAndClick(`data-test-id=${addToCartButton}`);
}
})
})
});
})
当 cypress 找不到元素时,我收到错误
Timed out retrying after 3000ms: Expected to find element: [data-test-id=notify-me-button], but never found it.
我也尝试过类似
element.is(':visible')
但也不起作用
有谁知道我哪里错了?非常感谢!
更新: 代码修改后即可工作
cy.get(`[data-test-id=${notifyButton}]`).should('not.exist').then(() => {
cy.scrollAndClick(`[data-test-id=${addToCartButton}]`);
cy.getByDataID('no-thanks-button-upsell-modal').click();
})
但是上面的情况,如果notifyButton存在,那么仍然会报错。仍然想知道是否有更好的方法来解决它
发生错误是因为 cy.get() 试图立即查找元素。要解决此问题,请使用 cy.get() 和 {timeout: 0} 以避免等待元素,然后检查其长度。如果不存在,则继续下一步操作。