使用isdisplay单击元素,直到显示另一个元素

Click element until another element is displayed using isDisplayed

本文关键字:元素 显示 另一个 isdisplay 单击 使用      更新时间:2023-09-26

我想点击后退按钮,直到我得到一个特定的页面在我的应用程序(我的expectedElement生活)。这似乎不工作…

它失败了,因为它找不到期望的元素。

function navigateBack() {
    var backButton = $('div.back');
    var expectedElement = $('span.some-specific-class');
    backButton.click().then(function () {
        if (expectedElement.isDisplayed()) {
            expectedElement.click();
        } else {
            navigateBack();
        }
    });
}

我做了一个小小的修改,在isDisplayed()上使用了一个promise。当在缺少的元素上调用isDisplayed()时,Protractor将抛出错误…

var expectedElement = $('span.some-specific-class');
expectedElement.isDisplayed().then(function(isDisplayed) {
    if(isDisplayed)
        console.log('isDisplayed');
});

所以,除非这是无效的语法,如果量角器将抛出调用isPresent()/isDisplayed()的错误,您如何检查元素是否存在或显示?!?

处理isDisplayed()抛出的错误:

function navigateBack() {
    var backButton = $('div.back');
    var expectedElement = $('span.some-specific-class');
    backButton.click().then(function () {
        expectedElement.isDisplayed().then(function (isDisplayed) {
            if (isDisplayed) {
                expectedElement.click();
            } else {
                navigateBack();
            }
        }, function (err) {
        });
    });
}

这样的东西对你有用吗?

function navigateBack() {
var EC = protractor.ExpectedConditions;
var isVisible = EC.visibilityOf(expectedElement);
var backButton = $('div.back');
var expectedElement = $('span.some-specific-class');
backButton.click().then(function () {
    browser.wait(isVisible, 5000, "failed to wait for element").then(function(result) {
        if(result){
            expectedElement.click();
        } else {
            navigateBack();
        }
    });
});

}