量角器-计算xpath中的元素并将其存储到var中



我需要将表中记录数的值存储在一些变量中,以便稍后使用它。现在尝试简单地打印记录的数量,像这样:

    var rows = element.all(by.xpath('//*[@id="content"]/div/div/table/tbody/tr'));
    var sum = rows.count();
    console.log(sum.getText());

或者像这样:

element.all(by.xpath('//*[@id="content"]/div/div/table/tbody/tr')).count().then(function(count) { console.log(count); });

但每次我都得到Failed: object is not a function。有谁能帮忙吗?

从这个线程尝试解决方案:量角器-计数重复器中的元素并打印它-但不起作用。

我想做类似于Java代码的场景:

@Test
public void test() throws Exception {
    When:
    clickOn(welcomePage.usersButton);
    clickOn(usersPage.archivedTab);
    int numberOfRecords = getDriver().findElements(By.xpath("//*[@id="content"]/div/div/table/tbody/tr")).size();
if (numberOfRecords > 0) {  do test, test steps ar here  } else {break test}

首先,您的sum变量不是一个量角器element对象来执行getText()。你必须得到承诺,count()函数返回存储在sum变量。-

var rows = element.all(by.xpath('//*[@id="content"]/div/div/table/tbody/tr'));
rows.count().then(function(count){
    var sum = count;
    console.log(sum);
});

如果您想断言元素的count()的值,那么使用jasmine将expect的值大于0。-

expect(element.all(by.xpath('//*[@id="content"]/div/div/table/tbody/tr')).count()).toBeGreaterThan(0);

element.all()等待隐式等待时间以获得DOM中存在的元素。一旦隐式等待超时,它就返回它找到的元素。如果没有找到任何具有定位符的元素,则返回0。

希望能有所帮助。

最新更新