3

我在 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>

我在量角器测试中有这行代码:

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

我想单击值为“草稿”的选项。你知道可能是什么问题吗?

4

5 回答 5

4
var option = element.all(by.options('obj as obj.name for obj in allBegStatuses'));
var selectOption = option.get(1);
selectOption.click();
于 2015-02-10T07:03:33.907 回答
1

这个怎么样:

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

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

希望能帮助到你。

于 2015-03-05T09:31:01.427 回答
1

我为 select(by 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();
                }
            });
    };

希望它对你有用

于 2015-02-10T11:52:29.483 回答
0

按型号选择:

element(by.select("selectedAction.begStatus"))
于 2014-05-20T08:39:31.850 回答
0

这对我有用:

    function selectOptionByText (selectBox, optionText) {
        selectBox.element(by.cssContainingText('option', optionText)).click();
    }
于 2015-02-18T08:39:01.860 回答