繁体   English   中英

如何在量角器中正确存储元素计数

[英]How to properly store element count in Protractor


我对量角器非常陌生,对以下代码的编写方式(实际可行)不满意。
我想简单地将计数存储在变量中(此处为“ nb_before”),然后在其后重用,但是promise机制不允许我简洁地执行此操作,因此我决定将所有内容都放在同一函数中。 但这太丑了。
我想念什么吗?
最好的祝福

    // We count the lines, we click on a button which adds a new line,
    // then we verify that the new line has a specific text.

    it("Test case", function () {
        browser.get(browser.baseUrl);
        var button = element(by.xpath("//whatever"));
        var rows = element.all(by.xpath("//whatever"));
        rows.count().then(function(count){
            nb_before = count;
            button.click(); // adds a line
            var nb_after = nb_before + 1;
            var new_line = element(by.xpath("//li[" + nb_after + "]"));
            expect(new_line.getText()).toEqual("yay");
        });
    });

看来您可以在这里使用.last()方法来获取最后一行:

it("Test case", function () {
    browser.get(browser.baseUrl);

    var button = element(by.xpath("//whatever"));
    var rows = element.all(by.xpath("//whatever"));

    button.click(); // adds a line

    expect(rows.last().getText()).toEqual("yay");
});

但是,我们可以在单击按钮之前和之后获取计数,并检查计数是否增加了一个-这仍然需要我们使用.then()来解决.count()返回的promise:

var button = element(by.xpath("//whatever"));
var rows = element.all(by.xpath("//whatever"));

rows.count().then(function (countBefore) {
    button.click();
    expect(rows.count()).toEqual(countBefore + 1);
});

暂无
暂无

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

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