【问题标题】:how nicely solve selenium promise? protractor如何很好地解决硒承诺?量角器
【发布时间】:2017-06-29 03:43:40
【问题描述】:

我编写了以下代码(页面对象模式)。工作正常。 但是,我不喜欢这样,因为我无法从“pressHelpLink”中删除“then”。而是在 getElementByLink 中添加代码。

我希望看到 ElementFinder Promise(而不是 ManagedPromise)作为 getElementByLink("Help") 的结果

如何很好地解决硒承诺?

var self = Page.create({
    url: {value: ''},

    // function:
    getElementByLink: {
        value: function (link) {
            return element.all(by.repeater('items')).then(function (el) {
                var my_array = el.map(function (el) {
                    return el.element(self.by.xpath('a'));
                });
                var element_array_finder = protractor.ElementArrayFinder.fromArray(my_array);

                var element = element_array_finder.filter(function (el) {
                    return el.getText().then(function (text) {
                        return text === link;
                    })
                });
                return element;
            }).then(function (element) {
                world.expect(element.length).equal(1);
                return element[0];
            });
        }

    },

    // elements:
    HelpLink: {
        get: function () {
            return self.getElementByLink('Help');
        }
    },

    // method:

    pressHelpLink: {
        value: function () {
            return self.HelpLink.then(function (el) {
                return el.click()
            });
        }
    },
});

【问题讨论】:

    标签: javascript selenium promise protractor pageobjects


    【解决方案1】:

    为什么不使用cssContainingText?也许像......

    // elements:
    HelpLink: {
        get: function () {
            return element(by.cssContainingText('a', 'Help');
        }
    },
    
    // method:
    
    pressHelpLink: {
        value: function () {
            return self.HelpLink.click()
        }
    },
    

    【讨论】:

    • 通过这个方法,我可以缩短代码。但在网站上可能会出现几个这样的元素。
    猜你喜欢
    • 2021-12-14
    • 1970-01-01
    • 1970-01-01
    • 2019-07-07
    • 1970-01-01
    • 2016-05-04
    • 2015-03-06
    • 1970-01-01
    • 2014-08-08
    相关资源
    最近更新 更多