等待文本出现在文本框中

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

我需要等待文本出现在我的应用程序的文本框中。问题是,文本加载通常需要 1 到 5 秒,有时甚至更长,并且某些文本框不包含文本,这使得无法使用 cypress-wait-until,因为它只是等待文本出现并导致测试失败60秒后未加载。这是我当前的实现:

cy.get(elementSelector)
    .if()
    .find(this.helpTextArea)
    .then(($helptextBox) => {
        let helptext = $helptextBox.text();
        helptext = helptext.trim() ? helptext : null;

        if (additionalHelptext) {
            questionModel.additionalHelptext = helptext;
        } else {
            questionModel.helptext = helptext;
        }
    });

我认为最有效的解决方案是一些软断言,它不会在没有文本的文本框上测试失败,但据我所知,Cypress 不支持任何类型的软断言。

尝试过:cypress-wait-until(找不到文本时失败)、cy.wait()(增加了测试执行时间,不可靠)。

typescript cypress e2e-testing
1个回答
0
投票

您的测试应尽可能具有确定性,因此不建议使用 waitUntil 等片状函数。

相反,增加查询的超时时间,因为你说“超过 5 秒”,我猜测 10 秒是合适的上限。

您可以使用字符串插值构建选择器。

要获取文本,请调用

text()
,它将返回文本或空字符串。

cy.get(`${elementSelector} ${this.helpTextArea}`)
  .invoke('text')
  .then(helptext => {
    if (helptext) {
      // process helptext here
    } else {
      // use additional text here
    }
  })
© www.soinside.com 2019 - 2024. All rights reserved.