单击元素如果存在

问题描述

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

怎么做?

解决方法

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

,

基于@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();
        }
    });
}