zal*_*517 3 selenium webdriver angularjs typescript protractor
我正在尝试使用TypeScript在Protractor解决方案中从WebDriver承诺返回一个值,但我得到undefined了响应.
get nameInput(): string {
var value: string;
this.nameElement.getAttribute('value').then(v => value = v);
return value;
}
Run Code Online (Sandbox Code Playgroud)
在上面的例子中,似乎函数没有等待返回的promise,因此我尝试离开getter样式并将返回类型声明为WebDriver的承诺:
getNameInput(): webdriver.promise.Promise<string> {
var nameElement = element(by.id('name'));
return nameElement.getText().then(v => { return v });
}
Run Code Online (Sandbox Code Playgroud)
但我得到Function的回报而不是价值v.似乎承诺没有被Jasmine打开expect,因为它在JS中运行时会发生.
我知道我可以在期望中直接运行promise,但理想情况下我会在任何期望之外创建所有函数的逻辑,这样我就可以只使用任何(如果有的话)参数来满足函数调用的期望 - 而不是污染具有承诺逻辑的测试用例.
有任何想法吗?
您不需要解决承诺,只需返回它们:
getNameInput(): webdriver.promise.Promise<string> {
var nameElement = element(by.id('name'));
return nameElement.getText();
}
Run Code Online (Sandbox Code Playgroud)
然后你需要从中返回一个真实值getNameInput()- 在你的测试中解决它:
getNameInput().then(v => { console.log(v) });
Run Code Online (Sandbox Code Playgroud)
请注意,您还expect()可以隐式解决它:
expect(getNameInput()).toEqual("Expected Value");
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1996 次 |
| 最近记录: |