【发布时间】:2016-05-18 11:03:01
【问题描述】:
我正在尝试使用 TypeScript 从 Protractor 解决方案中的 WebDriver 承诺返回一个值,但我收到了 undefined 作为响应。
get nameInput(): string {
var value: string;
this.nameElement.getAttribute('value').then(v => value = v);
return value;
}
在上述情况下,函数似乎没有等待承诺返回,因此我尝试摆脱 getter 样式并将返回类型声明为 WebDriver 的承诺:
getNameInput(): webdriver.promise.Promise<string> {
var nameElement = element(by.id('name'));
return nameElement.getText().then(v => { return v });
}
但我得到的是Function,而不是v 的值。似乎 Jasmine 的 expect 没有解开承诺,就像在 JS 中运行它时发生的那样。
我知道我可以直接在期望中运行承诺,但理想情况下,我会在任何期望之外创建所有函数的逻辑,这样我就可以只使用任何(如果有的话)参数为函数调用提供期望——而不是用承诺逻辑污染测试用例。
有什么想法吗?
【问题讨论】:
标签: angularjs selenium typescript webdriver protractor