protractor - 从 Protractor 的下拉列表中获取可见文本

标签 protractor

我正在尝试从没有选定选项的下拉列表中获取可见文本。 对于已选择选项的下拉列表,我使用下面的代码从下拉列表中获取值。

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/

相关文章:

node.js - Protractor - 每次运行后都会出现无法读取未定义的属性 'headerPrinter' 的异常

javascript - 如何将功能文件与 cucumber.js 中的步骤定义链接(用于 javascript 的 cucumber )

javascript - 如何在 Angular 2 中使用 Protractor ?

javascript - 在 Angular2 中使用 Protractor

javascript - 无法使用 Protractor 从 mailosaur 获取值,尽管使用 node.js 也是如此

javascript - 如何将此 Node.js 中的函数导出到另一个模块中

jasmine - 使用 Protractor 启动并运行 Marionette/Geckodriver

javascript - 使用 Protractor 配置在 Allure 中截取多个浏览器的屏幕截图

javascript - 如何使用表格而不是使用 Protractor 的中继器获取网格上的寄存器数量?

javascript - 无法使用 Protractor 单击我的 angularjs 应用程序的 Microsoft 帐户的登录按钮