我在页面中显示了一个字符串,我想将此字符串存储在变量中,以便我可以在测试过程中使用此变量进行进一步检查。
下面是它的样子:
let storedValue: string;
element(by.id('myElement')).getText().then((elementValue: string) => {
storedValue = elementValue;
console.log('stored value: ' + storedValue);
});
// Some unrelated code will go here in the future
browser.wait(() => storedValue !== null, 5000, 'browser.wait timeout');
expect(element(by.id('myElement')).getText()).toEqual(storedValue);
如果页面中的字符串为hello,则测试失败并显示日志Expected 'Hello' to equal undefined.
为什么它仍然没有定义?
我以为量角器会在 ControlFlow 中同步排队最后两条指令。
也许还有另一种方法来存储此变量,或者等待定义storedValue
?
browser.wait(() => storedValue !== null, 5000, 'browser.wait timeout').then(function(){
expect(element(by.id('myElement')).getText()).toEqual(storedValue);
});
在等待中设置期望将解决您的问题。但是,我对 ControlFlow 的细节了解不够,无法准确解释为什么你的不起作用。希望其他人能来做这件事。
您可以通过执行 browser.call 强制期望在控制流中运行。
browser.call(() => expect(element(by.id('myElement')).getText()).toEqual(storedValue));
但是您不必这样做。可能是错误。