我正在使用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部分:
如果需要提取一个值并在以后进行交互,那么量角器中的最佳做法是什么
甚至可以将一个promise解析为一个字符串(不要在.then(function(text){console.log(text)})
的日志中读取它,所以我可以将它分配给一个变量并在以后使用它)
答案 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);
});