第一次尝试e2e测试我的AngularJS应用程序。
我有一个带有'meta'类的ul。 ul有几个li。 我想抓住第一个li并将其与字符串进行比较。
var duration = browser.findElements(by.className('meta')).all(by.tagName('li')).get(1);
但是在运行测试时我不断收到错误:失败:browser.findElements(...)。all都不是函数。
我已经尝试过findElement和findElements并继续遇到同样的错误。
我偶然发现了上一个问题:Selecting second anchor element within lists using protractor。但它没有帮助我。
答案 0 :(得分:6)
目前接受的答案在您应该使用的内容方面是正确的,但这就是您的代码无效的原因。
你可能知道,量角器包装了WebDriverJS
- selenium javascript绑定。除此之外,它还添加了许多方便的概念,例如ElementFinder
或ElementArrayFinder
或browser
对象。
量角器还为您提供了一种直接调用纯WebDriverJS
函数和方法的方法,例如,它允许使用findElement()
或findElements()
在browser
对象上。
在您的情况下,browser.findElements(by.className('meta'))
将返回WebElement
的数组,这是一个纯WebDriverJS
概念。注意,这不是ElementArrayFinder
实例,此时您不在量角器区域。
现在,您正尝试在此元素数组上调用.all()
函数,但它显然会失败。
量角器的做法是:
var duration = $$('.meta li').first();
或者,您甚至可以使用单个选择器:
var duration = $('.meta li:first-of-type');
相关阅读:
答案 1 :(得分:2)