【问题标题】:Cypress refresh page unless text is present?除非存在文本,否则赛普拉斯刷新页面?
【发布时间】:2021-05-20 12:19:29
【问题描述】:

我正在尝试编写一个测试,但我已经到了需要等待一些文本变得可见的地步。

基本上到目前为止,我已经上传了一个文件,然后导航到另一个页面,这个新页面只是说“正在处理..”当文件检查完毕时它会说“成功!”

问题是这个页面不是每 x 秒调用一次 API 来更新它只是在页面加载时执行一次的文本,所以我想检查页面是否显示“正在处理..”调用 c​​y.reload()再次检查,调用 cy.wait(1000) 重新加载并再次检查等,直到页面显示“成功!”。

我的问题是如何检查文本是否存在而不是断言和测试失败?

【问题讨论】:

    标签: javascript cypress


    【解决方案1】:

    这个已经问过几次了,简短的回答是使用jQuery,例如

    cy.visit(...)
    cy.wait(1000)  // in case the page is initially slow to load
    
    const text = Cypress.$('div').text();
    if (text.trim().startsWith('Processing') {
      cy.wait(1000)
      cy.reload()
    }
    

    这会让你重新加载,但我想你想重复这个直到“成功...”,对于这种情况,递归似乎是重复内容的唯一方法,直到出现正确的 DOM。

    function waitForText(attempt = 0) {
    
      if (attempt > 100) {   // choose cutoff point, must have this limiter
        throw 'Failed'
      }
    
      cy.wait(1000);
      const text = Cypress.$('div').text();
      if (text.trim().startsWith('Processing') {
        cy.reload();
        waitForText(attempt + 1) 
      }
    }
    
    cy.visit(...)
    waitForText()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-20
      • 1970-01-01
      相关资源
      最近更新 更多