量角器:如何存储组件的文本值并在规范中重复使用它?



我在页面中显示了一个字符串,我想将此字符串存储在变量中,以便我可以在测试过程中使用此变量进行进一步检查。

下面是它的样子:

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

但是您不必这样做。可能是错误。

最新更新