javascript - Protractor - 在 ng-repeat 中获取子元素的文本

标签 javascript angularjs jasmine protractor

我正在使用 Protractor 测试 Angular 页面。此页面有一个由 ng-repeat 填充的表格,我想在该表格中添加额外的文本。这是 HTML 代码:

<div class="data-group ng-scope" ng-repeat="group in tableData  | filter: filterText | orderBy: getValueToOrderByGroup() : sortingCriteria.descending" ng-show="filtered.length > 0">
<div class="data-row group-header">
    <div class="col-md-6">
        <i ng-click="group.hideRows = !group.hideRows" ng-class="{'rotate-down': group.hideRows}" class="fa fa-fw fa-chevron-right"></i>
        <strong class="text-capitalize ng-binding" ng-click="group.hideRows = !group.hideRows"> HEADER TEXT </strong>
    </div>
</div>

<div collapse="group.hideRows" class="collapse in" style="height: auto;">

    <div class="data-row child-row ng-scope" ng-repeat="thing in filtered = (group.data | filter: filterStuff | filter: filterText | orderBy: getValueToOrderByChild() : sortingCriteria.descending)">

        <div class="col-md-3 cell-data child-row-indent text-capitalize">
            <span class="clickable-element ng-binding">CHILD ONE</span>&nbsp;<br>
        </div>


        <div class="col-md-2 child-row-indent-responsive">
            <span class="visible-xs visible-sm">Status:&nbsp;</span><span class="ng-binding"> CHILD TWO </span>
        </div>           
    </div>
</div>

这些是我提取文本的语句:

var headerText = element.all(by.repeater('group in tableData')).get(0).all(by.tagName('div')).get(0).element(by.css('div > strong')).getText();

var childOne = element.all(by.repeater('group in tableData')).get(0).all(by.tagName('div')).get(1).element(by.css('div > div:nth-child(1) > span').getText();

当我运行它时,它返回了所有函数的整个 block ,但没有返回实际文本。任何帮助,将不胜感激。

最佳答案

理解 WebdriverJSprotractor 本身完全基于 promises 的概念是很重要的,因为它们具有异步特性。参见 Promises and the Control Flow .

换句话说,在您的情况下,getText() 返回一个 promise 。如果你想看到实际值,你需要解决它:

headerText.then(function (text) {
    console.log(text);
});

请注意,您不需要在 expect() 中解决 promise - 它知道如何在做出期望之前解决 promise (感谢 jasminewd )。

关于javascript - Protractor - 在 ng-repeat 中获取子元素的文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29151365/

相关文章:

javascript - 将 Javascript 显示设置为 "none"

JavaScript For 循环无法访问输入类型(复选框)的parentElement

angularjs - 在 AngularJS 应用程序中创建多个 ng-app 是个好主意吗?

javascript - 当我使用子路径时,快速加载 Controller 无限次并且浏览器窗口崩溃

javascript - 如何使用 Karma 任务运行器使用 Jasmine 测试来模拟 Angular 应用程序中的 d3.json() 调用

javascript - 用 data.replace 删除所有图像?

javascript - Highcharts 同时收集 JSON 并通过修改 pointstart 更改日期

javascript - Protractor 进度输出

angularjs - Jasmine 提示 Angular 模块中不需要它们的依赖关系

javascript - 3 行布局,100% 高度 : 1 auto, 1 自动滚动,1 固定