Protractor 如何使用量角器.by.selectedOption

Protractor 如何使用量角器.by.selectedOption,protractor,Protractor,我正试图从下拉列表中检查所选选项的文本。我在某个地方读到量角器选择了选项,但我似乎无法让它工作。我曾经 ptor = protractor.getInstance(); var elemement = ptor.findElements(protractor.By.selectedOption('data.model')); expect(elem.getText()).toEqual('some text'); 假设我有一个下拉列表 <select class="..." ng-mod

我正试图从下拉列表中检查所选选项的文本。我在某个地方读到量角器选择了选项,但我似乎无法让它工作。我曾经

ptor = protractor.getInstance();
var elemement = ptor.findElements(protractor.By.selectedOption('data.model'));
expect(elem.getText()).toEqual('some text');
假设我有一个下拉列表

<select class="..." ng-model="data.model"> 

我应该将什么作为参数传递给selectedOption,为什么会出现“object has no method”错误?非常感谢您的建议

我曾经使用selectedOption,但在最新的量角器版本中,它已停止工作

我现在使用:

element(by.model('data.model')).getAttribute('value').then(function (selectValue) {
        expect(element(by.css('select option[value="' + selectValue + '"]')).getText()).toEqual(expectedText);
    });

所选选项在phantomjs en中从未起作用这在所有浏览器中都有效,因此对我来说这是一个改进。

这在Chrome的量角器中对我有效(略为修改/缩短了Andre的回答):


感谢Andre提供示例代码。有一个问题,如果我想把一个变量而不是实际值传递给by.model,我应该怎么做?我试着使用by.model(“+modelName+”),但是它对by.model不起作用,尽管对by.cssI起作用的语法相同,但我认为我只需要传入modelName就可以了。这很好。我为此创建了一个helper方法,并将其存储在paragrator.conf.js中的params.udf中。通过ID而不是CSS工作。下面是大家感兴趣的函数:
getSelectedValueFromModel:function(model,fieldId,callback){var mdl=model,fId=fieldId,callback=callback;mdl.getAttribute('value')。然后(function(selectValue){element(by.css('select#'+fId+'option[value=“'+selectValue+')))。getText().then(函数(值){callback(值);});}}
D'oh!评论中没有块编码…留着以防万一。。。
element(by.model('data.model')).getAttribute('value').then(function (selectValue) {
        expect(element(by.css('select option[value="' + selectValue + '"]')).getText()).toEqual(expectedText);
    });
expect(element(by.model('data.model')).getAttribute('value')).toBe(expectedText);