当我试图检查是否存在未显示的元素/按钮时。我得到:
Jasmine超时异常
我的代码像
getName(): any {
let name = element(by.id("xxxxxx"));
return name.isPresent().then((ispresent) => {
if (ispresent) {
return name.getText();
} else {
return '';
}
})
}
我正在尝试访问expect(method).toequal('');
方法
它应该运行,因为如果不存在,我期待空字符串,但我得到了Jasmine超时。。我没有在任何地方添加任何等待。
isPresent()
从GitHub回购,ElementFinder.isPresent
isPresent(): wdpromise.Promise<boolean> {
return this.count().then((count) => {
return count > 0;
});
}
isPresent检查计数,但如果有错误则不会捕获。如果计数抛出,我们可能会返回0。获取不存在的元素的文本也应该抛出promise拒绝。
注意:最好将方法更改为async/await(可选)。
async getName(): webdriver.promise.Promise<string> {
const name = element(by.id("xxxxxx"));
try {
return name.getText();
} catch (e) {
return '';
}
}
或者不是异步/等待
getName(): webdriver.promise.Promise<string> {
const name = element(by.id("xxxxxx"));
return name.getText().catch(e) {
return '';
}
}
尝试以下
async getName() {
let name = element(by.id("xxxxxx"));
let value: string = '';
await name.ispresent().then((ispresent) => {
if (ispresent) {
value=name.getText();
}
});
return value;
}
希望它能帮助你