【问题标题】:Protractor - count elements in xpath and store it to var量角器 - 计算 xpath 中的元素并将其存储到 var
【发布时间】:2015-10-01 20:27:20
【问题描述】:

我需要将表中记录数的值存储在某个变量中,以便最近使用它。 现在尝试简单地打印这样的记录数:

    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。 有人可以帮忙吗?

从这个帖子尝试过的解决方案: Protractor - count elements in repeater and print it - 但没用。

我想做类似于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}

【问题讨论】:

    标签: javascript java testing xpath protractor


    【解决方案1】:

    首先,您的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 中存在的元素。一旦隐式等待超时,它就会返回它找到的元素。如果它没有找到任何带有定位器的元素,则返回零。

    希望对你有帮助。

    【讨论】:

    • 我想做一些类似于这个简单的 java 代码的东西:int numberOfRecords = getDriver().findElements(By.xpath("//*[@id=\"content\"]/div/div/table/tbody/tr")).size(); assumeTrue(numberOfRecords > 0); - 所以它必须处理没有元素和少于一个元素的情况。还有什么想法吗?
    • @Michał 为您的查询更新了答案。我相信它应该适用于所有条件,即使你的元素为零。当你使用上面提到的expect语句时,你会得到同样的错误吗?
    • 你确定你的脚本在你期望的时候失败了吗?哪一行代码在控制台中为您显示错误?
    • 在 archivedTab 上等待时出现问题 :) 现在它工作正常 - 但是,如何将其存储到变量中以供以后使用?
    • 第一种方法应该适用于您使用count() 函数返回的承诺存储它的位置。它将值存储在变量 sum 中,您可以在其他地方使用它。如果您希望它在全球范围内可用,那么请在全球范围内声明它,我在上面的代码中没有这样做。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-09-30
    • 2017-10-18
    • 2021-08-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多