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

时间:2018-03-19 14:06:47

标签: protractor

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

这是它的样子:

    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.

为什么它仍未定义?

我认为Protractor会在ControlFlow中同步排队最后两条指令。

也许存在另一种存储此变量的方法,或者等待定义storedValue

2 个答案:

答案 0 :(得分:0)

browser.wait(() => storedValue !== null, 5000, 'browser.wait timeout').then(function(){
    expect(element(by.id('myElement')).getText()).toEqual(storedValue);
});

在等待中设置期望将解决您的问题。但是,我对ControlFlow的具体细节知之甚少,无法解释为什么你的工作不起作用。希望其他人能够出现并做到这一点。

答案 1 :(得分:0)

您可以通过执行browser.call强制期望在控制流内运行

browser.call(() => expect(element(by.id('myElement')).getText()).toEqual(storedValue));

但你不应该这样做。可能是一个错误。