如何点击量角器测试中的选择框中的选项?

时间:2014-05-20 08:32:29

标签: angularjs selenium-webdriver protractor end-to-end

我在Angular应用程序中使用Protractor进行端到端测试。我试图点击选择框中的选项,但我有下面的错误元素当前不可见,可能无法操纵。

我有html的这一部分:

<select class="form-control" ng-required="true" ng-model="selectedAction.begStatus"
        ng-options="obj as obj.name for obj in allBegStatuses">
</select>

我在Protractor测试中有这行代码:

element(by.xpath('//select/option[text()="Draft"]')).click();

我想点击带有值&#34;草稿&#34;的选项。你知道可能是什么问题吗?

5 个答案:

答案 0 :(得分:4)

var option = element.all(by.options('obj as obj.name for obj in allBegStatuses'));
var selectOption = option.get(1);
selectOption.click();

答案 1 :(得分:1)

我为select(通过id)创建了一个函数,并通过文本比较单击了一个选项。

this.selectOption = function (selector, item) {
        var selectList, desiredOption;
        selectList = element(by.id(selector));
        selectList.all(protractor.By.tagName('option'))
            .then(function (options) {
                options.some(function (option) {
                    option.getText().then(function (text) {
                        if (item.toLowerCase() === text.toLowerCase()) {
                            desiredOption = option;
                            return true;
                        }
                        return true;
                    });
                });
            })
            .then(function () {
                if (desiredOption) {
                    desiredOption.click();
                }
            });
    };

希望它适合你

答案 2 :(得分:1)

这个怎么样:

element(by.xpath('//*[@id="controlId"]/option[3]')).click();

这应该在下拉列表中选择值。

希望它有所帮助。

答案 3 :(得分:0)

按型号选择:

element(by.select("selectedAction.begStatus"))

答案 4 :(得分:0)

这对我有用:

    function selectOptionByText (selectBox, optionText) {
        selectBox.element(by.cssContainingText('option', optionText)).click();
    }