我在页面上有4个相同的容器盒。我把所有这些都放在一个数组中。现在每个容器盒都包含一些相同的元素。我想从第一个容器中获取第二个元素。 以下是我用来取容器的方法,它运行正常:
var pageContent = element(by.css('[class="main-content"]'));
expect(pageContent.all(by.css('.modularBoxContent')).count()).tobe(4);
现在,如果我想用class作为labelText insider模块化盒容器获取所有元素的计数,我可以通过使用下面的方法来实现:
expect(pageContent.all(by.css('.modularBoxContent')).all(by.css('[class="labelText"]')).count()).tobe(10);
但是这给了我所有4个容器中的labelText。我想只在第一个容器中获取labelText或在第一个容器中获取第一个labelText的文本。我尝试了下面的代码,但它无法正常工作并收到错误信息
TypeError:this.pageContent.get不是函数
expect(pageContent.get(0).all(by.css('.modularBoxContent')).all(by.css('[class="labelText"]')).count()).tobe(3);
我也在下面试过但是效果不好。 也为此获得与上述相同的错误。
expect(pageContent.all(by.css('.modularBoxContent')).get(1).all(by.css('[class="labelText"]')).get(0).getText()).tobe(3);
有人可以建议正确使用吗?
答案 0 :(得分:2)
我认为这应该对你有用,让我们试试吧。由于所有容器都具有相同的类,因此请使用.all()
创建一个数组,并使用.get()
来检索所需的索引。
var pageContent = element(by.css('.main-content'));
var firstContainer = pageContent.all(by.css('.modularBoxContent')).first(); // or could have used .get(0);
成功识别出第一个容器后,现在只需链接定位器调用即可查找其下的所有子容器。既然你说你想要第一个容器下的第二个元素,我们将使用.get(1)
(1是索引,所以它是数组中的第二个元素)。
var secondChild = firstContainer.all(by.css('[class="labelText"]')).get(1);
而且,仅仅是一个FYI,如果你愿意的话,其中许多可能会被重构为更短。例如,您可以链接CSS调用,无需将它们分开:
以上代码应与此相同:
var firstContainer = element.all(by.css('.main-content .modularBoxContent')).first();
var secondChild = firstContainer.all(by.css('.labelText')).get(1);