gpt4 book ai didi

javascript - Protractor 、 promise 、参数和闭包

转载 作者:行者123 更新时间:2023-11-30 08:29:51 24 4
gpt4 key购买 nike

我现在正在撕掉我仅存的一点头发。我想我的左膝已经失去了视力。

我有两个可用的函数。每个都正确地接受一个参数。我非常非常非常喜欢一个函数同时接受两个参数。

我有一个 super 简单的数据结构:

var stuff = [
{ name: "Stone", id: "cc45" },
{ name: "Hanley", id: "cc78" }
];

我希望循环遍历该结构并对每个结构运行一个 super 简单的测试。请注意:

  for (var ii = 0; ii < stuff.length; ii++) {
var aTile = element(by.id(stuff[ii].id));

aTile.getText().then(
/* magical solution */
);
}

我只是缺少神奇的解决方案。在版本 A(缺乏魔法)中,我可以成功地理解 Protractor 好心抓取的文本:

  aTile.getText().then((function (text) {
console.log(" --Protractor Grab--" + text);
}));

在版本 B(也缺乏魔力)中,我可以成功查看我希望将 Protractor 抓取的文本与以下数据进行比较的数据:

  aTile.getText().then((function (test) {
console.log(" ==Stuff test==" + test);
})(stuff[ii].name));

无论我拉多少头发,我都不能做的是让 Protractor 来比较两者。实际上,我需要添加以下内容:

   expect(protractorGrabbedText).toContain(expectedTextFromStuff);

请各位代码大侠帮帮我,我恳求你们。

最佳答案

这很简单。 expect() 方法能够做出隐式解析的 promise ,并使用结果与实际数据进行比较。您可以使用如下所示的方法,

for (var ii = 0; ii < stuff.length; ii++) {
var aTile = element(by.id(stuff[ii].id)).getText();
expect(aTile.getText()).toContain(stuff[ii].name) //This will take care of resolving the promises.
}

方法-2:

由于您使用的是 for 循环,因此需要使用闭包来获取 Promise 内的 ii 值。尝试下面的代码。

for (var ii = 0; ii < stuff.length; ii++) {
function closure(index){
element(by.id(stuff[index].id)).getText().then(function(text){
expect(text). toContain(stuff[index].name)
})
}
closure(ii)
}

关于javascript - Protractor 、 promise 、参数和闭包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39729393/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com