jasmine:异步回调未在jasmine指定的超时内调用.DEFAULT_TIMEOUT_INTERVAL.当我尝试获



当我试图检查是否存在未显示的元素/按钮时。我得到:

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;
}

希望它能帮助你

最新更新