量角器无法从executescript中获取价值,它会返回承诺

时间:2018-11-08 10:22:06

标签: angular typescript protractor

在量角器中,我有这个。

function getText(): string {
    return browser.executeScript(`return 'some text';`);
}

第一个返回诺言,我不知道如何从诺言中获得价值。

然后我尝试做

function getText(): string {
    browser.executeScript(`return 'some text';`).then(function(result) {
        return result;
    });

第二个问题是我找不到使它异步的方法。仅在我所有的代码完成执行后返回。

我要实现的目标是:

let text = getText();

希望有人可以提供帮助,因为我找不到该问题的有效答案。

编辑: 我找不到将其放置在函数外部的变量中的方法。我当前的解决方案是:

browser.executeScript(`return 'some text';`).then(function(result) {
    console.log(result);
    //do your stuff here with the variable.
});
//can't find out how to use it outside the then function as other code runs first. But for now, that way works.

1 个答案:

答案 0 :(得分:0)

您可以使用async ... await机制处理诺言:

async function getText(): Promise<string> {
  const text = browser.executeScript(`return 'some text';`);
  return text;
});

...
...

let text = await getText();

如果您不想在getText方法完成后等待(我不知道为什么需要这个奇怪的东西),您将无法解决Promise:

let text = getText();