量角器 - 获取 select 菜单选项的文本

Protractor - get the text of a select menu option

我正在使用量角器对我的应用程序进行端到端测试。但是,我在更新记录时构建了一个新值数组,以与旧值进行比较以确保它们被正确更新。

其中一个字段是 select 菜单,因此我想从选项中获取文本以推送到数组中。

我select正在使用以下选项:

element(by.id(fieldName6)).click().then(function() {
     element(by.css('#' + fieldName6 + ' option:nth-child(2)')).click();
});

一切都很顺利。我现在希望能够获取该选项的文本,而不是值,以将其推送到我的数组中。我尝试了以下方法:

newValues.push(browser.executeScript("$('#" + fieldName6 + " option:nth-child(3)').text()"));

推动Promise::17234 {[[PromiseStatus]]: "pending"}

newValues.push(element(by.css('#' + fieldName6)).$('option:checked').getText());

推动 [object Object].

现在卡住了。任何帮助将不胜感激。

ProtractorWebDriverJS完全基于concept of promiseselement(by.css('#' + fieldName6)).$('option:checked').getText() 你会 return 一个承诺,它会被控制流 解析为一个选项文本

您可以将 promises 收集到 newValues 数组中,但是,当您需要实际值时,您将不得不解析其中的 promises。我会为此使用 protractor.promise.all()

protractor.promise.all(newValues).then(function (resolvedValues) {
    console.log(resolvedValues);
});

请注意,如果您只想断言 newValues 中的值,您可以直接使用 expect() - 它知道承诺何时传入,并会在执行检查之前隐式解析承诺:

expect(newValues).toEqual(["option 1", "option 2"]);