gpt4 book ai didi

javascript - Protractor - 当网格的行列 ID 为 ="0-0"时,如何从一列中获取所有单元格并对它们求和

转载 作者:行者123 更新时间:2023-11-30 14:27:35 24 4
gpt4 key购买 nike

我正在测试的门户中验证向下钻取过程,为此我的脚本正在执行以下操作:从表的第一行读取值并单击该值(某些单元格有一个链接,可以向下钻取到详细信息页面)要点击这个特定的单元格,我正在使用它的 ID:

<table id="transHistTable" class="table table-hover  table-bordered table-striped dataTable no-footer" style="width: 100%" role="grid" aria-describedby="transHistTable_info">
<thead>
<tbody>
<tr role="row" class="odd">
<td id="0-0" class="ng-scope">31 Jul 2018</td>
<td id="0-1" class="ng-scope">RandomText0</td>
<td id="0-2" class="ng-scope">RandomText1</td>
<td id="0-3" class="ng-scope">EmptyValue</td>
<td id="0-4" class="ng-scope">Value I Click And Save it</td>

因此,对于此表,我直接单击第 0 行第 4 列,因为我的数据和过滤器将始终只带来一行,但是,我的问题来了......执行向下钻取时,我永远不知道我将拥有多少行,因为这取决于用户操作。我需要执行验证以将向下钻取后显示的表中所有值的总和与从表“transHistTable”第 0 行第 4 列中捕获的值进行比较

这是执行向下钻取后得到的值:

<table id="transHistDetailTable" class="table table-hover  table-bordered table-striped dataTable no-footer" style="width: 100%" role="grid" aria-describedby="transHistDetailTable_info">
<thead>
</thead>
<tbody><tr role="row" class="odd">
<td id="0-0" class="ng-scope">Site</td>
<td id="0-1" class="ng-scope">Date</td>
<td id="0-2" class="ng-scope">Time</td>
<td id="0-3" class="ng-scope">I</td>
<td id="0-4" class="ng-scope">value 1</td>
<td id="0-5" class="ng-scope">value 2</td>
<td id="0-6" class="ng-scope">value 3</td>
<td id="0-7" class="ng-scope">12</td>
</tr></tbody>
</table>

所以我想做的是读取所有行(可能是 0、1、2、3、4、5...)保存存储在第 7 列中的值,然后在完成后执行求和,然后与我从第一个表中保存的值进行比较。

我的代码是这样的:

            var rowstransHistDetail = element(by.id('transHistDetailTable')).all(by.tagName("tr"));

rowstransHistDetail.count().then(function(rcount){
//In case only 1 row is displayed
if (rcount < 3)
{
element(by.id('0-7')).getText().then(function(valueQty){
expect(valueQty).toEqual(600)
})
}
else
{
var tempValue
for (i=0; i < rcount; i++)
{
element(by.id(i+'-7')).getText().then(function(valueQty){

tempValue = Number(tempValue) + Number(valueQty)
})
}

expect(tempValue).toEqual(600);
}
});

但是当我执行这个时,给了我一个未定义的值

有什么解决办法吗?

谢谢!!!!

最佳答案

您似乎在执行前在循环中递增一个值。看这里:https://stackoverflow.com/a/6867907/6331748

应该在循环中使用 i++ 而不是 ++i

如果我错了,请给我留言。

===========================

编辑:这是我这边的一些代码:

var expectedCells = element.all(by.css('#transHistDetailTable tr td:nth-of-type(5)'));
var currentSum = 0;
expectedCells.each((eachCell) => {
eachCell.getText().then((cellText) => {
currentSum += Number(cellText);
});
}).then(() => {
expect(currentSum).toEqual(600);
});

抱歉,无法测试。我只想分享一个主要思想并对其进行阐述。

expectedCells 都是 id=n-4 单元格。我们遍历所有元素并从中获取文本,更改为数字类型并添加到当前值。之后我们做一个断言。

看来if语句也不一定。让我知道它是如何工作的。

关于javascript - Protractor - 当网格的行列 ID 为 ="0-0"时,如何从一列中获取所有单元格并对它们求和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51701921/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com