在Protractor中检查一个元素是否存在

7

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

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

13

isDisplayed()方法如果元素实际上不存在于DOM树中,将会失败。你需要使用isPresent()方法代替:

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

0
通过使用async/await,您现在可以轻松完成此操作,无需使用promise链:
it('should something something', async () => {
    const element = element(by.css('.icon-cancel'));
    if(await element.isPresent()) {
        // Element is found
    } else {
        // Element is not found
    }
});

0
一种可能性是,如果元素是动态加载的,则在您的测试运行时可能尚未加载该元素。因此,您可以等待几秒钟以使元素可用。
var EC = protractor.ExpectedConditions;
var yourElement = element(by.css('.icon-cancel'));
browser.wait(EC.presenceOf(yourElement), 5000);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接