单击元素(如果存在)

Click on element if exists

我想使用 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();
        }
    });
}