有没有一种方法可以检查元素中是否有文本?我已经找到了,textToBePresentInElement但是此函数检查指定的值,如果失败,则不会返回正确的错误。
textToBePresentInElement
我通过API填充元素,然后稍后将其加载,因此我希望浏览器等到元素中出现任何信息后再检查值是否正确。
另外,在EC发生故障时设法获得特定的错误消息也非常有帮助:
browser.wait(EC.textToBePresentInElement(element(by.binding('myvar')), "expected"), 5000);
第三个参数browser.wait()是自定义错误消息:
browser.wait()
browser.wait(EC.textToBePresentInElement(element(by.binding('myvar')), "expected"), 5000, "Text is not something I've expected");
要等待元素包含任何文本,可以编写 自定义期望条件 :
var EC = protractor.ExpectedConditions; var anyTextToBePresentInElement = function(elementFinder) { var hasText = function() { return elementFinder.getText().then(function(actualText) { return actualText; }); }; return EC.and(EC.presenceOf(elementFinder), hasText); };
这是用法:
browser.wait(anyTextToBePresentInElement(element(by.binding('myvar'))), 5000);