量角器e2e:提取字符串并将其分配给var

时间:2017-12-15 00:26:49

标签: javascript string typescript promise protractor

我正在使用Protractor和TypeScript来推动e2e回归

元素

<strong _ngcontent-jwu-49="" data-protractor="StreamId">11107</strong>'

情况下 我需要从元素中提取ID并从字符串和ID

构造一个URL

无论我做什么,承诺都没有得到解决

这是我尝试的内容

function getStreamId() {
    //browser.ignoreSynchronization = true;
    var streamIdElement = $$("[data-protractor='StreamId']")
    var streamId = streamIdElement.getText().then(
function(text){

browser.get('https://URL/page/'+text); 
      console.log(streamId)
    })

仍然是一个承诺

browser.executeScript("var text = document.querySelectorAll('[data-
protractor='StreamId']').innerHtml").then(function(text)
{console.log(text);});
  

WebDriverError失败:未知错误:Runtime.evaluate抛出异常:   参数列表

之后的SyntaxError:missing)

我的问题是第2部分:

  1. 如果需要提取一个值并在以后进行交互,那么量角器中的最佳做法是什么

  2. 甚至可以将一个promise解析为一个字符串(不要在.then(function(text){console.log(text)})的日志中读取它,所以我可以将它分配给一个变量并在以后使用它)

1 个答案:

答案 0 :(得分:2)

您的第一次尝试实际上非常接近最终结果。您找到了名为getText()的元素并解决了承诺。

让函数返回一个承诺并在需要实际值后解决

function getStreamId() {
    var streamIdElement = $$("[data-protractor='StreamId']")
    return streamIdElement.getText();
}

getStreamId().then(function(streamId) {          
    browser.get('https://URL/page/'+streamId); 
    console.log(streamId);
});