第一次尝试 e2e 测试我的 AngularJS 应用程序。
我有一个“元”类的 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 .但这对我没有帮助。
最佳答案
就您应该使用的内容而言,当前接受的答案是正确的,但这就是您的代码不起作用的原因。
如您所知,Protractor 包装了 WebDriverJS
- Selenium javascript 绑定(bind)。最重要的是,它添加了许多方便的概念,如 ElementFinder
或 ElementArrayFinder
或 browser
对象。
Protractor 还为您提供了一种调用纯 WebDriverJS
的方法函数和方法直接,例如,它允许使用findElement()
或 findElements()
在 browser
上目的。
在你的例子中,browser.findElements(by.className('meta'))
将返回 WebElement
的数组s 这是一个纯 WebDriverJS
概念。请注意,这不是 ElementArrayFinder
例如,此时您不在 Protractor 区域。
现在,您正在尝试调用 .all()
在此元素数组上运行,但显然失败了。
这样做的 Protractor 方法是:
var duration = $$('.meta li').first();
或者,您甚至可以使用单个选择器:
var duration = $('.meta li:first-of-type');
相关阅读:
关于javascript - Protractor 失败 : browser. findElements(...).all 不是函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43161118/