0

我想使用 setInterval 并尝试五次来检查元素是否存在(一个按钮)。如果它存在,我想单击它并在它之后继续,如果不存在,我只想继续。

怎么做?

4

2 回答 2

0

基于@Max,我只是以更假的证明方式写答案:

如果需要检查是否显示按钮或其他内容,则应调用 isDisplayed()。isDisplayed() 是一个承诺,如果元素被显示,那么在 then() 解析中应该调用延续。如果该元素未显示,则应在 promise 的 catch() 解析中调用回调。

例子:

iCheckForElementAndContinue: function(callback) {
    element.isDisplayed()
    .then({
        // Element is found
        if (callback) {
            callback();
        }
    })
    .catch({
        // Element is not found
        if (callback) {
            callback();
        }
    });
}
于 2021-01-12T16:55:59.660 回答
0

这不是 UIVeri5 中底层 API 的 webdriver 的正确方法。正确的方法是将 browser.driver.wait() 与检查条件的谓词一起使用。但是当针对 UI5 应用程序工作时,UIVeri5 根本不需要这种轮询,因为 UIVeri5 会自动处理等待。这种魔法只能在 UI5 应用程序中起作用,因为它依赖于 UI5 运行时来检测 UI5 应用程序何时准备就绪。因此,在为 UI5 编写测试时,您不需要任何轮询,只需编写 element(by.control()).isDisplayed() 即可,它工作正常且非常可靠。检查将在正确的时间发生 - 当 ui5 应用程序完全呈现并且不需要轮询时。

于 2021-01-11T09:48:33.177 回答