Angularjs 角度量角器e2e测试并选择值?

Angularjs 角度量角器e2e测试并选择值?,angularjs,protractor,angularjs-e2e,Angularjs,Protractor,Angularjs E2e,获取select元素的当前选定值时遇到问题。在某些情况下,我可以使用: element(by.css('#some-select')).$('[selected]').getText(); 而且效果很好。但正如我所发现的,它之所以有效,是因为选项元素上存在选定的属性。若我用javascript通过设置select的值来选择option,那个么就不可能通过selected属性来获取元素 因为我在任何地方都找不到答案,所以选择选项或其文本的正确方法是什么 谢谢。好吧,现在我觉得自己既愚蠢又有点愤怒

获取select元素的当前选定值时遇到问题。在某些情况下,我可以使用:

element(by.css('#some-select')).$('[selected]').getText();
而且效果很好。但正如我所发现的,它之所以有效,是因为选项元素上存在选定的属性。若我用javascript通过设置select的值来选择option,那个么就不可能通过selected属性来获取元素

因为我在任何地方都找不到答案,所以选择选项或其文本的正确方法是什么


谢谢。

好吧,现在我觉得自己既愚蠢又有点愤怒

事实证明,有一种简单的方法可以通过调用来获取所选的选项:

element(by.selectedOption('model-name'));
文件

我觉得这样做是错误的,因为我需要使用新的locator selectedOption,而不是重用我定义的select element元素定位器缓存。感觉很糟糕,因为我很自然地想简单地将elementby.css之类的东西称为“some-select”


但也许有一种方法我无法找到?

好吧,所以现在我觉得自己既愚蠢又有点愤怒

事实证明,有一种简单的方法可以通过调用来获取所选的选项:

element(by.selectedOption('model-name'));
文件

我觉得这样做是错误的,因为我需要使用新的locator selectedOption,而不是重用我定义的select element元素定位器缓存。感觉很糟糕,因为我很自然地想简单地将elementby.css之类的东西称为“some-select”


但也许有一种方法我无法找到?

所以我遇到了这个问题,我找不到任何我真正喜欢的答案

我的回答 首先,我建议通过添加TrackBy语句来更改ng选项

例如:

<select ng-options="l.id as ('filters.languages.' + l.id | translate) for l in limitedLanguages track by l.id" ng-model="filterLanguage">
</select>
你得到

<select ng-options="l.id as ('filters.languages.' + l.id | translate) for l in languages track by l.id" ng-model="filterLanguage" class="ng-valid ng-dirty ng-valid-parse ng-touched">
    <option value="all" selected="selected">All</option>
    <option value="english">English</option>
    <option value="hebrew">Hebrew</option>
    <option value="russian">Russian</option>
    <option value="arabic">Arabic</option>
    <option value="other">Other</option>
</select>
请注意,如果没有轨迹,则该值只是索引0,1,。。而且,通过值跟踪更具可读性/意义所有,英语


然后可以使用getAttribute on value来获取其他答案中提到的值

所以我遇到了这个问题,我找不到任何我真正喜欢的答案

我的回答 首先,我建议通过添加TrackBy语句来更改ng选项

例如:

<select ng-options="l.id as ('filters.languages.' + l.id | translate) for l in limitedLanguages track by l.id" ng-model="filterLanguage">
</select>
你得到

<select ng-options="l.id as ('filters.languages.' + l.id | translate) for l in languages track by l.id" ng-model="filterLanguage" class="ng-valid ng-dirty ng-valid-parse ng-touched">
    <option value="all" selected="selected">All</option>
    <option value="english">English</option>
    <option value="hebrew">Hebrew</option>
    <option value="russian">Russian</option>
    <option value="arabic">Arabic</option>
    <option value="other">Other</option>
</select>
请注意,如果没有轨迹,则该值只是索引0,1,。。而且,通过值跟踪更具可读性/意义所有,英语

然后可以使用getAttribute on value来获取其他答案中提到的值

似乎by.selectedOption已从最新的量角器版本中删除。请参阅另一个答案。selectedOption已从最新的量角器版本中删除。看到另一个答案了吗