赛普拉斯元素变更调查

时间:2020-07-02 00:01:11

标签: javascript cypress

我在测试开始时创建了一个测试条目,但有时在测试中访问页面时不会加载该条目。想要轮询该条目,如果不存在,请重新加载页面,然后再次检查。在文档中使用cy.get()的递归函数示例进行了尝试,但出现错误:

Error:       TypeError: move.find(...).contains is not a function

功能:

function pollForTestMove() {
            cy.get('div[class="consumer-name-wrap"]')
                .then((move) => {
                    if (
                        move.find('span')
                        .contains("test" + localStorage.getItem('randomNameString') + " user" + localStorage.getItem('randomNameString') + " (TEST)", { "matchCase": true })
                    )
                        return

                    cy.reload
                    pollForTestMove()
                })
        }

2 个答案:

答案 0 :(得分:1)

要解决此特定错误,我认为使用cy.wrap就足够了:

cy.wrap(move).find('span')...

但是,我认为带有条件测试的代码不会像您期望的那样起作用。请看看Cypress documentation about conditional testing.

希望有帮助。如果您有任何疑问,请告诉我

答案 1 :(得分:0)

你需要这样的东西。然后在您的页面中调用 pollForElement(元素中的文本名称)

pollForElement(name) {
var count = 0;

function pollElement() {
  return cy.get('body').then($body => {
    if ($body.text().includes(name)) {
      console.log('item has been found');
      return $body;
    }
    else {
      count += 1;
      cy.wait(2000);
      cy.reload();
      console.log('Polling for element...');
    }
    if(count === 10 ) {
      console.log('Element not found');
      assert.isFalse(true, 'Element not found')
    }
    return pollElement();
  });
 }
return pollElement();
}