我正在尝试从没有选定选项的下拉列表中获取可见文本。 对于已选择选项的下拉列表,我使用下面的代码从下拉列表中获取值。
DenominationDropdown = element(by.css('[id*="MainContent_uxDenomination"] select'));
expect(DenominationDropdown.element(by.css('[selected="selected"]')).getText()).toBe('All Denominations');
在我的第二个下拉列表中,所选值未填充。我想获取当前可见值(默认值),在我的例子中是“所有日期”,但下面的代码不起作用,因为没有选定的值。
DatesDropdown = element(by.css('[id*="MainContent_uxDates"] select'));
expect(DatesDropdown.element(by.css('[selected="selected"]')).getText().toBe('All Dates');;
有人可以建议一种在 Protractor 中读取当前可见文本或下拉列表默认值的方法吗?
下拉菜单的 HTML:
<select name="ctl00$ctl00$ctl00$ctl00$body$body$MainContent$MainContent$uxDates" id="ctl00_ctl00_ctl00_ctl00_body_body_MainContent_MainContent_uxDates" class="ClassName">
<option value="%">All Dates</option>
<option value="Option1">Option1</option>
<option value="Option2">Option2</option>
.......
</select>
最佳答案
如果 HTML 中实际上没有 selected=selected
属性,则应该有另一种方法。我在我的应用程序的下拉菜单中尝试了这个,效果很好:
var el = element(by.model('myDropdown')).$('option:checked');
expect(el.getText()).toEqual('test');
请注意,上面是一个下拉菜单,我最初认为它会是 option:selected
但这引发了无效定位器错误。我过去也曾对 radio 做过这样的事情:
var el = $('input[type=radio]:checked');
并且,如果您不知道,$
的语法等同于 element(by.css())
关于protractor - 从 Protractor 的下拉列表中获取可见文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40139796/