javascript - Protractor 失败 : browser. findElements(...).all 不是函数

标签 javascript angularjs protractor

第一次尝试 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)。最重要的是,它添加了许多方便的概念,如 ElementFinderElementArrayFinderbrowser对象。

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/

相关文章:

angularjs - $setPristine 不是函数

javascript - 将数据从弹出窗口发送到网格 Angular 2?

javascript - jQuery 创建一个简单的对象,添加属性并访问它

javascript - 尝试从 webmap API 版本 4.11 创建 map 时,ArcGIS util 加载失败

javascript - 在 Angular 中使用 ng-if 时 View 不会更新

angularjs - 混合 Angular 1/2 应用程序上的事件发射器

javascript - Protractor 中的切片元素

angularjs - 使用 phantomJs 和 Protractor 的问题

javascript - 如何在 Protractor Cucumber 框架中使用断点进行调试

javascript - 使用下拉选择对 list.js 中的项目进行排序