【问题标题】:Cypress - if function with timeout赛普拉斯 - 如果函数超时
【发布时间】:2020-08-25 13:28:56
【问题描述】:

我有问题。我想尝试为 60 秒超时找到一个元素 (1)。如果赛普拉斯找不到它,那么它不能以失败测试结束,而是点击其他元素(2),然后截图并以失败结束

这是因为如果找不到此元素(1),则意味着应用程序中的某些功能失败。单击第二个元素 (2) 后,我会找到问题所在以及为什么会这样结束。那是因为我想要那个截图。

有谁知道解决这个问题吗?

【问题讨论】:

标签: automated-tests cypress


【解决方案1】:

我认为这应该实现您正在寻找的 -

cy.get("body").then(($body) => {
    // synchronously query for element
    if ($body.find("element").length == 0) {
        cy.get('locator').click()
        cy.screenshot(filename)
    }
    else {
        // do something else
    }
})

【讨论】:

  • 那行不通。赛普拉斯在尝试获取第一个定位器和测试结束时总是超时,因为失败不会进入 else 函数。
  • 我已经更新了我的答案。现在我们将尝试从 body 标签中找到元素并根据其长度执行操作,而不是直接获取元素。你可以试试这个,让我知道它是否有效?
  • 不,这也行不通。在我尝试获取此元素的选项卡后,应用程序正在调用其他应用程序并且它正在等待响应(因此它有时会等待 10 秒,否则等待 20 秒)。所以在进入这个标签后的正文中永远不会是这个元素。
  • 你可以在你的 cypress json 文件中添加"defaultCommandTimeout": 60000,这样 cypress 命令会在超时前默认等待 1 分钟。
  • 那又不行了。它没有在正文中找到该元素,因此继续代码。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-12-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-15
  • 2021-03-24
  • 1970-01-01
相关资源
最近更新 更多