乐闻世界logo
搜索文章和话题

How to wait and then read innertext of an element that will only appear somewhere between 30 seconds to 120 seconds in Cypress

8 个月前提问
6 个月前修改
浏览次数23

1个答案

1

在使用 Cypress 进行自动化测试时,处理动态出现的元素以及等待特定的条件成立是一个常见的场景。对于您的具体问题,我们需要等待一个元素,在某个不确定的时间点(介于 30 秒到 120 秒之间)出现,并验证它的内部文本。我们可以利用 Cypress 的 .wait().should() 方法来实现这一功能。

步骤1: 选择元素

首先,您需要确定您想要检查的元素的选择器。假设这个元素的选择器是 .dynamic-text

步骤2: 使用定时器和断言

您可以使用 .wait() 方法来设置一个最长等待时间,然后使用 .should() 方法结合一个适当的条件来持续检查元素的状态,直到该条件满足或超时。我们可以使用 should('exist') 来确保元素存在,然后再检查其内部文本。

下面是一个可能的 Cypress 测试代码示例,演示如何等待一个在30秒至120秒之间随机出现的元素,并验证其内部文本:

javascript
describe('Wait for a dynamic element to appear', () => { it('waits for the text of a dynamically appearing element', () => { // 访问你的测试页面 cy.visit('http://your-testing-page.com'); // 最大等待时间设为120秒 cy.wait(120000); // 检查元素是否存在,并验证内部文本 cy.get('.dynamic-text', { timeout: 120000 }).should('exist').and(($el) => { const text = $el.text(); expect(text).to.match(/your expected text pattern/); // 替换为你的文本验证逻辑 }); }); });

注意事项:

  1. 超时时间:在这里,{ timeout: 120000 }确保 Cypress 会持续检查元素状态,直到超过指定的超时时间(120秒)。您应该根据实际情况调整这个时间。
  2. 文本验证expect(text).to.match() 用于验证元素的文本内容。您需要根据实际情况修改里面的匹配模式。
  3. 资源消耗:频繁的查询和长时间的超时可能会对性能有影响,特别是在处理大量的测试或复杂的应用时。

通过这种方法,您可以灵活地处理和测试在不确定时间出现的元素,同时保证测试的健壮性和可靠性。

2024年6月29日 12:07 回复

你的答案