Javascript 量角器失败:browser.findElements(…)。all不是函数

Javascript 量角器失败:browser.findElements(…)。all不是函数,javascript,angularjs,protractor,Javascript,Angularjs,Protractor,第一次尝试e2e测试我的AngularJS应用程序 我有一个“meta”类的ul。ul有两个李的。 我想抓取第一个li并将其与字符串进行比较 var duration = browser.findElements(by.className('meta')).all(by.tagName('li')).get(1); 但是在运行测试时,我不断得到错误:Failed:browser.findElements(…)。all不是一个函数 我已经尝试了findElement和findElement,并且

第一次尝试e2e测试我的AngularJS应用程序

我有一个“meta”类的ul。ul有两个李的。 我想抓取第一个li并将其与字符串进行比较

var duration = browser.findElements(by.className('meta')).all(by.tagName('li')).get(1);
但是在运行测试时,我不断得到错误:Failed:browser.findElements(…)。all不是一个函数

我已经尝试了findElement和findElement,并且不断得到相同的错误

我偶然发现了前一个问题:。但是这对我没有帮助。

最好使用量角器的“default”ElementFinder语法,例如
元素(by.css('ul'))
,请参阅

你会得到这个

var duration=element(按.className('meta')).all(按.tagName('li')).get(1)

或者
element.all(by.css('.metali')).first(),请参阅


或者速记
$$('.metali')).first(),请参见

当前接受的答案在您应该使用的方面是正确的,但以下是代码不起作用的原因

您可能知道,量角器包装了
WebDriverJS
-selenium javascript绑定。除此之外,它还添加了许多方便的概念,如
ElementFinder
ElementArrayFinder
浏览器
对象

量角器还提供了一种直接调用纯
WebDriverJS
函数和方法的方法,例如,它允许在
浏览器
对象上使用
findElement()
findElements()

在您的例子中,
browser.findElements(by.className('meta'))
将返回一个
WebElement
s数组,这是一个纯粹的
WebDriverJS
概念。注意,这不是
ElementArrayFinder
实例,此时您不在量角器区域

现在,您试图在这个元素数组上调用
.all()
函数,但显然失败了

量角器的方法是:

var duration = $$('.meta li').first(); 
或者,您甚至可以使用一个选择器:

var duration = $('.meta li:first-of-type');
相关阅读:


非常感谢!你知道为什么我的代码不起作用吗。除了浏览器。这没什么区别。我@alecxe,你能帮我学习高级量角器吗。深入量角器。如何每个承诺的工作,一些有用的链接github的量角器为提前学习。我的问题很广泛,但无论你能提供什么链接,我都可以学习量角器的一些高级概念。@KishanPatel the实际上是一个很好的起点。但是,不要沉溺于太多的理论——只要走出去,把事情自动化:)实践,实践!对量角器文档非常容易理解。我只是按照你说的做一些实际的事情。除此之外,github还有其他重要的文档/存储库吗?