Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/464.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 中继器的打印元件_Javascript_Angularjs_Protractor_Repeater - Fatal编程技术网

Javascript 中继器的打印元件

Javascript 中继器的打印元件,javascript,angularjs,protractor,repeater,Javascript,Angularjs,Protractor,Repeater,因此,我对Javascript和Java编程都是全新的,并且刚刚开始进行QA测试。我现在的目标相当简单。在从列表中进行选择之前,我希望确保所有元素都已加载到中继器中。我想等到第一个和最后一个元素出现后再继续测试 我知道可能有更好的方法可以做到这一点,请随意向我提出建议。我在网上到处寻找,发现了一些代码片段,详细说明了如何将中继器中元素的值打印到控制台 我想我应该先打印出第一个和最后一个元素,以确保我正确地得到它们。我这样做: var repeaterElements = element.all(

因此,我对Javascript和Java编程都是全新的,并且刚刚开始进行QA测试。我现在的目标相当简单。在从列表中进行选择之前,我希望确保所有元素都已加载到中继器中。我想等到第一个和最后一个元素出现后再继续测试

我知道可能有更好的方法可以做到这一点,请随意向我提出建议。我在网上到处寻找,发现了一些代码片段,详细说明了如何将中继器中元素的值打印到控制台

我想我应该先打印出第一个和最后一个元素,以确保我正确地得到它们。我这样做:

var repeaterElements = element.all(by.repeater(repeaterObj));
var text = repeaterElements.first().toString();
console.log(text);
我的目标只是简单地打印第一个元素。但是我让它打印了[object]。我的推理是否错误?我以为“.first()”会给我中继器中的第一个元素


-hopper

我不是100%确定你想要什么,但我想这就是。这应该通过一个中继器,选择所有元素,获取这些元素的文本并将其输出。如果你真的打算做任何事情而不是安慰别人,记住要信守诺言

element.all(by.repeater(repeaterObj)).each(function(obj){
  obj.getText().then(function(text){
      console.log(text)
  });
});

我想,如果您关闭
.toString()
功能,您将按预期输出对象。嘿,谢谢您的帮助!这正是我想要做的。我仍在努力掌握JS,你能解释一下.each()是如何接受函数的吗?换句话说,我对.each()如何知道这个“obj”来自哪里感到困惑。类似地,传递给console.log使用的参数“text”在哪里?从逻辑上讲,这是执行obj.getText()的解决方案,但我想我要问的是,它如何知道将该值传递给
.then(function(text){console.log(text)})中的参数?希望这是有道理的。我发现这个问题很难用短语来表达。每个方法都只是元素上的一个方法。在这种情况下,它需要一个函数,并将每个元素传递到第一个参数(我认为它也需要第二个参数,即索引)。在getText的例子中,它是元素上的一个可用方法,从“each”返回一个承诺,我们可以“then”off。它可以帮助您对单个元素进行控制台,您可以看到这些元素上有哪些可用的方法。嘿,我知道我要让这个线程保持更长的时间,但我觉得这和转发器有点关系,所以我想我会问你。我想编写一个快速助手函数,在单击某个元素之前,该函数将等待中继器中的第一个和最后一个元素可见/完全加载。我有:
var EC=量角器.ExpectedConditions;var repeaterElements=element.all(通过.repeater(repeaterObj));返回browser.wait(EC.visibilityOf(repeaterElements.first())和&EC.visibilityOf(repeaterElements.last()),5000)它似乎可以工作,但我需要一个正确的实现!:)是的,您所拥有的将起作用,但我不确定是否需要EC(取决于您正在做什么),我也不认为您需要等待“第一个和最后一个”,因为如果element.all没有自动等待所有元素,我会感到惊讶。我认为下面的代码会更简洁有效:
returnbrowser.wait(element.all(by.repeater(repeaterObj)).isDisplayed()),5000)同样,如果你真的需要这么做,我会很惊讶…大多数时候你应该可以不用等待就完成上面的工作。除非你是在不改变状态的情况下生成中继器?