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

时间:2015-12-23 10:56:24

标签: javascript selenium protractor end-to-end e2e-testing

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

其中一个字段是选择菜单,所以我想从选项中抓取文本以推入数组。

我正在使用选择选项:

textFieldDidEndEditing

这一切都很可爱。我现在希望能够获取该选项的文本而不是值,以推入我的数组。我尝试过以下方法:

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());

现在相当困难。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

ProtractorWebDriverJS完全基于concept of promiseselement(by.css('#' + fieldName6)).$('option:checked').getText()会向您返回一个承诺,该承诺将通过控制流 解析为选项文本。

您可以将承诺收集到newValues数组中,但是,当您需要实际值时,您必须解决内部的承诺。我会使用protractor.promise.all()

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

请注意,如果您只想在newValues中声明值,则可以直接使用expect() - 它知道传入承诺的时间并在执行检查之前隐式解析承诺:< / p>

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