繁体   English   中英

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

[英]Protractor - count elements in xpath and store it to 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变量不是一个对它执行getText()的量角器element对象。 你必须得到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()元素的值,那么expect它使用jasmine大于0。 这是如何做 -

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

element.all()等待隐式等待时间以获取DOM中存在的元素。 一旦隐式等待超时,它就会返回它找到的元素。 如果找不到任何带定位符的元素,则返回零。

希望能帮助到你。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM