检查量角器中是否存在元素

时间:2016-06-09 14:48:25

标签: javascript angularjs protractor automated-tests

我一直在尝试使用下面的代码片段来检查我正在寻找的元素是否存在,但是我得到的是“失败:找不到使用定位器的元素:By(css selector,.icon-cancel)” 。我希望程序做的是执行b()

element(by.css('.icon-cancel')).isDisplayed().then(function(result) {
    if ( result ) {
        a();
    } else {
        b();
    }
});

3 个答案:

答案 0 :(得分:12)

如果元素实际上不存在于DOM树中,

isDisplayed()将失败。您需要使用isPresent()方法:

$('.icon-cancel').isPresent().then(function(result) {
    if ( result ) {
        a();
    } else {
        b();
    }
});

答案 1 :(得分:0)

一种可能性是,如果动态加载元素,则在测试运行时可能尚未加载该元素。所以你可以等几秒钟让元素可用。

var EC = protractor.ExpectedConditions;
var yourElement = element(by.css('.icon-cancel'));
browser.wait(EC.presenceOf(yourElement), 5000);

答案 2 :(得分:0)

通过使用 async/await,您现在可以在没有承诺链的情况下轻松做到这一点:

it('should something something', async () => {
    const element = element(by.css('.icon-cancel'));
    if(await element.isPresent()) {
        // Element is found
    } else {
        // Element is not found
    }
});