javascript - 如何很好地解决 Selenium Promise 问题? Protractor

标签 javascript selenium promise protractor pageobjects

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

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

如何很好地解决 Selenium Promise?

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()
            });
        }
    },
});

最佳答案

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

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

// method:

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

关于javascript - 如何很好地解决 Selenium Promise 问题? Protractor ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42165375/

相关文章:

javascript - node.js 函数返回未定义的值

javascript - 有没有好的网站性能分析工具? (前端)

javascript - 删除导航器 highstocks 之后的额外空间/边距

javascript - 在 javascript 中检测 Lion (OS X 10.7)?

python - 有什么方法可以使用 Selenium Webdriver (firefox) 记录 http 请求/响应吗?

css - 未能找到 Selenium 识别的该字段的元素

javascript - 使用 Strongloop 环回实现 Q

javascript - 如何为这个基于 setInterval 的 Sprite 动画添加 5 秒延迟?

python - 如何使用 selenium + chrome webdriver + python 忽略警报?

javascript - 如何在 node.js 中实际使用 Q Promise?